SIGKILL 和 SIGTERM

来源:互联网 发布:百家cms微商城v2.6 编辑:程序博客网 时间:2024/06/01 21:19

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);

}