【发布时间】:2011-08-15 03:13:33
【问题描述】:
我在 fork 上尝试一些简单的代码。当我给出这样的代码时,它工作正常。它会打印
我是孩子
我是家长
然后等待 30 秒。我知道这是由于这两个过程之间的切换。第一个孩子执行,然后是父母,然后是孩子……
#include<stdio.h>
#include<stdlib.h>
main()
{
int pid;
pid=fork();
if(pid==0)
{
printf("\nI am the child\n");
sleep(30);
exit(0);
}
if(pid>0)
{
printf("\nI am the parent\n");
wait();
}
}
但是当我给喜欢时(无需在父母中等待)
#include<stdio.h>
#include<stdlib.h>
main()
{
int pid;
pid=fork();
if(pid==0)
{
printf("\nI am the child\n");
sleep(30);
exit(0);
}
if(pid>0)
{
printf("\nI am the parent\n");
}
}
它只是打印
我是孩子
我是家长
然后退出(无需等待 30 秒)。
是不是因为没有等待调用父级退出而子级仍在执行?但是为什么它没有出现在终端(等待)?
父母是否在这里变成僵尸?
【问题讨论】:
-
请不要使用那么多问号。 ;-)