我在C程序,它利用fork()
系统调用:现在ç叉程序输出的解释
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
void doit(void)
{
pid_t pid;
fork();
fork();
printf("Unix System Programming\n");
return;
}
int main(void)
{
doit();
printf("WTF\n");
exit(0);
}
,这个节目给了我8行输出。我认为这是因为两叉2^2 = 4次* 2打印声明= 8次。如果我错了,请纠正我并解释原因。
现在,问题是为什么我在每次运行中获得不同的输出?比方说,我执行此代码:我第一次得到输出
Unix System Programming
WTF
Unix System Programming
Unix System Programming
Unix System Programming
WTF
WTF
WTF
和第二次我得到:再次
Unix System Programming
WTF
Unix System Programming
Unix System Programming
WTF
Unix System Programming
WTF
WTF
次和第三次的不同。为什么会发生?我无能为力;请详细解释。
'doit()'中未使用的变量'pid'。函数中的“返回”也不是必需的。 –