signal(SIGHUP, SIG_IGN);
signal信号函数,第bai一个参数表示需要处理的信号值du(SIGHUP),第二个zhi参数为处理函数或者是dao一个表示,这里,SIG_IGN表示忽略SIGHUP那个注册的信号。
SIGHUP
和控制台操作有关(terminal),当控制台被关闭时系统会向拥有控制台sessionID的所有进程发送HUP信号,默认HUP信号的action是exit,如果远程登陆启动某个服务进程并在程序运行时关闭连接的话会导致服务进程退出,所以一般服务进程都会用nohup工具启动或写成一个 daemon。
范例
#include<unistd.h>
#include<signal.h>
#include<sys/types.h>
#include<sys/wait.h>
main()
{
pid_t pid;
int status;
if(!(pid=fork())){
printf(“Hi I am child process!\n”);
sleep(10);
return;
}
else{
printf(“send signal to child process (%d) \n”,pid);
sleep(1);
kill(pid ,SIGABRT);
wait(&status);
if(WIFSIGNALED(status))
printf(“chile process receive signal %d\n”,WTERMSIG(status));
}
}
执行
send signal to child process(3170)
Hi I am child process!
child process receive signal 6
第4条划重点。
https://blog.csdn.net/weixin_43548748/article/details/88052825