2

我正在用 C 编写一个程序。该程序fork()在启动时执行一次。当父进程退出时(没有父进程显式杀死子进程),让子进程自行死亡的最佳方法是什么?

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

4

1 回答 1

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;

}

于 2013-07-31T19:05:52.830 回答