写一个后台运行程序,出现僵尸进程
void deamon_process()
{
int pid,i;
if(pid=fork())
{
exit(0);
}else if(pid < 0)
{
_exit(1);
}
setsid();
if(pid=fork())
{
exit(0);
}else if(pid < 0)
{
_exit(1);
}
for( i=0;i< NOFILE;++i)
{
close(i);
}
chdir("/tmp");
umask(0);
signal(SIGCHLD,SIG_IGN);
}
这是一个把一个当前用户进程,变成后台运行进程的函数.
但是使用该函数后,会产生一个僵尸进程.
比如我用该函数编译出程序 test
运行 test
ps查看进程发现:
706 z [test]
707 s test
发现PID=706 test 的进程编程僵尸进程了,而PID=707则是在运行的.
为什么706会变成一个僵尸进程,我显示调用exit(0)来退出父进程的啊,他因该回收掉啊.