当前位置: 技术问答>linux和unix
为什么这个程序没有输出?父进程中止后子进程也跟着中止吗?
来源: 互联网 发布时间:2015-10-11
本文导语: 为什么这个程序没有输出?父进程中止后子进程也跟着中止吗? #include #include #include #include int main() { int status; pid_t child_pid; child_pid = fork(); if(child_pid=0) { sleep(3); ...
为什么这个程序没有输出?父进程中止后子进程也跟着中止吗?
#include
#include
#include
#include
int main()
{
int status;
pid_t child_pid;
child_pid = fork();
if(child_pid=0)
{
sleep(3);
printf("Next!n");
sleep(3);
printf("Next!n");
return 0;
}
else
return 0;
}
//毫无疑问,父进程先中止.我想在子进程中打印一些东西,但是什么也看不到.
//父进程先于子进程中止,是不是子进程马上也中止了,被init清除,所以看不到输出?
//僵尸进程只可能在子进程先于父进程中止的情况下才能产生吗?
#include
#include
#include
#include
int main()
{
int status;
pid_t child_pid;
child_pid = fork();
if(child_pid=0)
{
sleep(3);
printf("Next!n");
sleep(3);
printf("Next!n");
return 0;
}
else
return 0;
}
//毫无疑问,父进程先中止.我想在子进程中打印一些东西,但是什么也看不到.
//父进程先于子进程中止,是不是子进程马上也中止了,被init清除,所以看不到输出?
//僵尸进程只可能在子进程先于父进程中止的情况下才能产生吗?
|
应当是if(child_pid == 0),你的写法有误
父进程退出时子进程依然运行,但是子进程为孤儿进程,此时父进程为系统进程。
进程僵死是子进程结束,但主进程没有wait子进程结束造成的
父进程退出时子进程依然运行,但是子进程为孤儿进程,此时父进程为系统进程。
进程僵死是子进程结束,但主进程没有wait子进程结束造成的