signal函数
#include <signal.h>
typedef void(*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
第一个参数signum:指明了所要处理的信号类型,它可以取除了SIGKILL和SIGSTOP外的任何一种信号。
第二个参数handler:描述了与信号关联的动作,它可以取以下三种值:
(1)SIG_IGN
这个符号表示忽略该信号。
#include <stdio.h>
#include <signal.h>
int main(int argc, char *argv[])
{
signal(SIGINT, SIG_IGN);
while (1);
return 0;
}
按下Ctrl+C,由于信号忽略了,程序并不退出,必须通过kill -9 pid来干掉它
2)SIG_DFL
这个符号表示恢复对信号的系统默认处理。不写此处理函数默认也是执行系统默认操作。
#include <stdio.h>
#include <signal.h>
int main(int argc, char *argv[])
{
signal(SIGINT, SIG_DFL);
while (1);
return 0;
}
这时就可以按下CTRL +C 来终止该进程。把signal(SIGINT, SIG_DFL);这句去掉,效果是一样的.
注意:signal函数只影响当前进程
案例