2013-07-31 61 views
2

我正在用C编写程序。该程序在启动时会执行一次fork()。当父进程退出时(没有父节点显式地杀死子进程),让子进程死掉的最好方法是什么?Linux:当父母退出时退出分叉子进程

例如,如果我向父进程发送SIGTERM,则该子进程不会退出。

+1

@CarlNorum没有C的回答.. –

+0

的问题说 “不杀父母子进程明确”。 –

+0

孩子可以打电话_退出家长不必 – CBIII

回答

1

您可以设置一个信号处理程序,并在父级达到其执行结束时从父级发送子级进程的信号。函数fork将子进程ID返回给父进程,因此可以将该进程提供给kill函数。您可以通过它SIGINTSIGTERM或您选择的信号。

#include <signal.h> 
#include <stdio.h> 
#include <unistd.h> 

int main(int argc, char* argv[]) { 
    pid_t id = 0; 
    id = fork(); 
    if(id == 0) { 
      /*child code*/ 
    } else if(id == -1) { 
      printf("Error forking."); 
    } else { 
      /*parent code*/ 
      kill(id, SIGINT); 
    } 
    return 0; 

}