场景:
我正在开发一个守护程序监控应用程序,它根据请求(TCP-IP)启动和停止守护程序。为了实现这一点,在分叉之后,我打电话setsid()
是为了将新进程与父进程(监控进程)“分离”。
当我试图杀死监控应用程序创建的进程之一时,它最终会失效。
这是我的代码:
int retval;
char* arg_list[] = {
NULL /* The argument list must end with a NULL. */
};
retval = fork();
if (retval == 0)
{
umask(0);
setsid();
execv(LBSDPATH, arg_list);
exit(0);
}
据我了解,已失效/僵尸进程意味着父母尚未加入该进程。不setsid()
解决?