SIGKILL是不能屏蔽的,一般用SIGTERM。
另外-1表示的是相同uid的进程,但这样会有副作用。
0表示是相同进程组的进程,包括父进程自己。
可以在fork了所有的子进程之后,
用signal(SIGTERM,SIG_IGN)使父进程忽略SIGTERM信号。
int kill(pid_t pid, int sig);
1. pid>0时,pid是信号欲送往的进程的标识。
2. pid=0时,信号送往与调用kill()的进程属同一个使用组的进程
3. pid=-1时,信号将送往所有调用进程有权给其发送信号的进程,除了进程1(init)。
4. pid<-1时,信号将送往以-pid为组标识的进程。
pid = fork();
if (pid == -1)
{
fprintf(stderr, "Fork error MsgQueueDeal(1)!!!\n");
signal(SIGTERM, SIG_IGN);//忽略(SIG_IGN)程序结束(SIGTERM:terminate)信号
kill(0, SIGTERM);/*相同进程组的进程,包括父进程自己。*/
close(sock_listen);
exit(-1);
}