Linux:父进程退出时退出分叉子进程

时间:2013-07-31 18:32:48

标签: c linux fork

我正在用C语言编写程序。程序启动时会fork()一次。当父进程退出时(没有明确地删除父进程的父进程),让子进程自行处理的最佳方法是什么?

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

1 个答案:

答案 0 :(得分: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;

}