避免僵死进程
2013-09-07 19:30
162 查看
int main()
{
pid_t pid;
if( (pid = fork()) < 0)
exit(0);
else if(pid == 0) /* first child */
{
if( (pid = fork()) < 0)
exit(0);
else if(pid > 0)
{
//command;
exit(0);
}
sleep(2);
printf("second child ,parent pid = %d\n", getppid() );
//command;
exit(0);
}
if( (waitpid(pid,&stat,0)) != pid) /* wait for first child */
exit(0);
//command;
return 0;
}
在第二个子进程中用sleep以保证在打印父进程ID时第一个子进程已终止。如果不使第二个子进程睡眠,则在fork之后,它可能比其父进程先执行,于是它打印的父进程ID将是创建它的父进程,而不是Init进程(进程ID 1)。
{
pid_t pid;
if( (pid = fork()) < 0)
exit(0);
else if(pid == 0) /* first child */
{
if( (pid = fork()) < 0)
exit(0);
else if(pid > 0)
{
//command;
exit(0);
}
sleep(2);
printf("second child ,parent pid = %d\n", getppid() );
//command;
exit(0);
}
if( (waitpid(pid,&stat,0)) != pid) /* wait for first child */
exit(0);
//command;
return 0;
}
在第二个子进程中用sleep以保证在打印父进程ID时第一个子进程已终止。如果不使第二个子进程睡眠,则在fork之后,它可能比其父进程先执行,于是它打印的父进程ID将是创建它的父进程,而不是Init进程(进程ID 1)。
相关文章推荐
- 避免产生僵死进程
- 避免僵死进程
- 【linux】——linux僵死进程的产生与避免
- linux僵死进程以及如何避免
- 调用fork两次以避免僵死进程的产生
- 调用fork两次以避免僵死进程
- fork俩次以避免僵死进程
- linux僵死进程的产生与避免
- 用signal函数处理父进程创建的多个子进程,避免僵死进程的产生
- 解决避免僵死进程的问题
- 避免僵死进程
- 调用 fork() 两次以避免僵死进程
- UNIX环境高级编程有一个例子说fork两次可以避免产生僵死进程,我不知道,为什么fork两次就能避免僵死进程?
- 调用 fork() 两次以避免僵死进程
- 避免linux系统调用fork后产生僵死进程
- (转载)Linux僵死进程的产生与避免
- 避免僵死进程实例
- 如何避免僵死进程
- fork出的子进程和父进程 避免僵死进程
- linux僵死进程的产生与避免