描述
C库函数void (*signal(int sig, void (*func)(int)))(int)设置处理信号的函数,即具有信号编号的信号处理程序sig。
声明
以下是 signal() 函数的声明。
void (*signal(int sig, void (*func)(int)))(int)
参数
sig− 这是设置处理函数的信号编号。以下是一些重要的标准信号编号 -
不。 | 宏和信号 |
---|---|
1 |
SIGABRT (Signal Abort) 异常终止,例如由函数发起。 |
2 |
SIGFPE (信号浮点异常)错误的算术运算,例如零除或导致溢出的运算(不一定是浮点运算)。 |
3 |
SIGILL (信号非法指令)无效的函数图像,例如非法指令。这通常是由于代码损坏或尝试执行数据所致。 |
4 |
SIGINT (信号中断)交互式注意信号。通常由应用程序用户生成。 |
5 |
SIGSEGV (Signal Segmentation Violation) Invalid access to storage - 当程序试图在内存之外读取或写入时,它会被分配给它。 |
6 |
SIGTERM (信号终止)终止请求已发送至程序。 |
func- 这是一个指向函数的指针。这可以是程序员定义的函数或以下预定义函数之一 -
不。 | 函数说明 |
---|---|
1 |
SIG_DFL 默认处理 - 信号由该特定信号的默认操作处理。 |
2 |
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("Going to sleep for a second...\n");
sleep(1);
}
return(0);
}
void sighandler(int signum) {
printf("Caught signal %d, coming out...\n", signum);
exit(1);
}
让我们编译并运行上面的程序,将产生以下结果,程序将进入无限循环。为了退出程序,我们使用了 CTRL + C 键。
Going to sleep for a second... Going to sleep for a second... Going to sleep for a second... Going to sleep for a second... Going to sleep for a second... Caught signal 2, coming out...
相关用法
- C语言 sinh()用法及代码示例
- C语言 sin()用法及代码示例
- C语言 setlocale()用法及代码示例
- C语言 scanf()用法及代码示例
- C语言 strcspn()用法及代码示例
- C语言 setlinestyle()用法及代码示例
- C语言 showbits()用法及代码示例
- C语言 sqrt()用法及代码示例
- C语言 system()用法及代码示例
- C语言 strtol()用法及代码示例
- C语言 sprintf()用法及代码示例
- C语言 sscanf()用法及代码示例
- C语言 snprintf()用法及代码示例
- C语言 strrchr()用法及代码示例
- C语言 strftime()用法及代码示例
- C语言 strtok()用法及代码示例
- C语言 strncat()用法及代码示例
- C语言 宏 setjmp()用法及代码示例
- C语言 scanf()和gets()的区别用法及代码示例
- C语言 strupr()用法及代码示例
注:本文由纯净天空筛选整理自 C library function - signal()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。