我正在用C语言编写程序。程序启动时会fork()
一次。当父进程退出时(没有明确地删除父进程的父进程),让子进程自行处理的最佳方法是什么?
例如,如果我将SIGTERM发送到父进程,则子进程不会退出。
答案 0 :(得分:1)
您可以设置信号处理程序,并在父项到达执行结束时从父项向子进程发送信号。 fork
函数将子进程的id返回给父进程,因此可以将其提供给kill
函数。您可以传递SIGINT
或SIGTERM
或您选择的信号。
#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;
}