首页 > 其他分享 >C 库函数 - signal()

C 库函数 - signal()

时间:2024-02-02 10:23:25浏览次数:23  
标签:... int signal 休眠 void Signal 库函数

C 标准库 - <signal.h>

描述

C 库函数 void (*signal(int sig, void (*func)(int)))(int) 设置一个函数来处理信号,即带有 sig 参数的信号处理程序。

声明

下面是 signal() 函数的声明。

void (*signal(int sig, void (*func)(int)))(int)

参数

  • sig -- 在信号处理程序中作为变量使用的信号码。下面是一些重要的标准信号常量:
信号
SIGABRT (Signal Abort) 程序异常终止。
SIGFPE (Signal Floating-Point Exception) 算术运算出错,如除数为 0 或溢出(不一定是浮点运算)。
SIGILL (Signal Illegal Instruction) 非法函数映象,如非法指令,通常是由于代码中的某个变体或者尝试执行数据导致的。
SIGINT (Signal Interrupt) 中断信号,如 ctrl-C,通常由用户生成。
SIGSEGV (Signal Segmentation Violation) 非法访问存储器,如访问不存在的内存单元。
SIGTERM (Signal Terminate) 发送给本程序的终止请求信号。
  • func -- 一个指向函数的指针。它可以是一个由程序定义的函数,也可以是下面预定义函数之一:
SIG_DFL 默认的信号处理程序。
SIG_IGN 忽视信号。

返回值

该函数返回信号处理程序之前的值,当发生错误时返回 SIG_ERR。

实例

下面的实例演示了 signal() 函数的用法。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>

void sighandler(int);

int main()
{
   signal(SIGINT, sighandler);

   while(1) 
   {
      printf("开始休眠一秒钟...\n");
      sleep(1);
   }

   return(0);
}

void sighandler(int signum)
{
   printf("捕获信号 %d,跳出...\n", signum);
   exit(1);
}

让我们编译并运行上面的程序,这将产生以下结果,且程序会进入无限循环,需使用 CTRL + C 键跳出程序。

开始休眠一秒钟...
开始休眠一秒钟...
开始休眠一秒钟...
开始休眠一秒钟...
开始休眠一秒钟...
捕获信号 2,跳出...

 

 

from:https://www.runoob.com/cprogramming/c-function-signal.html

标签:...,int,signal,休眠,void,Signal,库函数
From: https://www.cnblogs.com/im18620660608/p/18002654

相关文章

  • C# .NET 中 LINQ to Entities查询中使用时转换为数据库函数的CLR方法(EF.Functions)
    EF.Functions映射由于并非所有数据库函数都有等效的C#函数,因此EFCore提供程序提供了特殊的C#方法来调用某些数据库函数。这些方法通过EF.Functions定义为扩展方法来用于LINQ查询中。这些方法是特定于提供程序的,因为它们与特定数据库函数密切相关。因此,适用于某个......
  • 条件变量pthread_cond_wait()和pthread_cond_signal()——需要和互斥锁一起使用——转
    条件变量pthread_cond_wait()和pthread_cond_signal()详解转载——原博客地址:https://www.cnblogs.com/cthon/p/9084735.html 条件变量     条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线......
  • C语言入门-printf库函数
    printf()库函数调用格式:printf("<格式化字符串>",<参量表>);声明intprintf(constchar*format,...)参数格式字符意义a,A以十六进制形式输出浮点数(C99新增)。实例printf("pi=%a\n",3.14);输出pi=0x1.91eb86p+1。d以十进制形式输出带符号整数(正数不......
  • netcore webpi 通过signalr 给vue项目推送消息
     最近项目上需要做个服务给前端推消息,首先就想到了signalr,关于signalr详情可以参考微软官方文档(ASP.NETCoreSignalR概述|MicrosoftLearn),微软现在也有使用教程(ASP.NETCoreSignalR入门|MicrosoftLearn)微软教程是通过使用库管理器(LibMan)从unpkg 获取客户端库,如......
  • 设计一个函数实现字符串的逆序,并且不可以使用库函数
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>voidreverse_string(chararr[],intsz){ intleft=0; intright=sz-1; while(arr[left]<arr[right]) { inttmp=arr[left]; arr[left]=arr[right]; arr[right]=tmp; left++; ......
  • c+ signal
    #include<iostream>#include<string>usingnamespacestd;typedefuint32_tu32;typedefuint8_tu8;typedefuint16_tu16;#include<signal.h>intdeamon_run=1;/*进程关闭信号处理*/staticvoidsig_handler(constintsig){ intret; if(......
  • signal.signal
    Python的signal模块允许您设置信号处理程序,以便在接收到特定信号时执行自定义操作。信号是操作系统向程序传递信息的一种方式。在Python中,您可以使用signal.signal()函数注册信号处理程序,以便在接收到特定信号时执行自定义操作。例如,当按下键盘上的Ctrl+C时,操作系统会生成SIGINT......
  • 不用库函数,自己设计函数求字符串长度
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmy_strlen(char*str)//传的是地址,就必须用相应的指针类型接收{ char*dest=str; char*end=str; while(*end!='\0') { end++; } returnend-dest;//返回一个整型,my_strlen为整型形式的函数}int......
  • 【PySide6】信号(signal)和槽函数(slot),以及事件过滤器
    https://blog.csdn.net/qq_25262697/article/details/129374905说明在PYQT中,父控件可以通过两种方式响应子控件的事件:通过信号(signal)和槽函数(slot)机制连接子控件和父控件父控件可以通过设置eventFilter()方法来监听响应子控件的事件一、信号(signal)和槽函数(slot)示例在PYQ......
  • Signal信号记录
    Signal信号记录在POSIX.1-1990标准中定义的信号列表信号值动作说明SIGHUP1Term终端控制进程结束(终端连接断开)SIGINT2Term用户发送INTR字符(Ctrl+C)触发SIGQUIT3Core用户发送QUIT字符(Ctrl+/)触发SIGILL4Core非法指令(程序错误、试图执行数据......