【发布时间】:2017-11-02 07:06:28
【问题描述】:
我有如下代码
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
printf("a\n");
fork();
printf("b\n");
if(fork() == 0) {
printf("c\n");
exit(0);
}
printf("d\n");
return 0;
}
输出:
a
b
d
a
b
c
a
b
d
a
b
c
我不知道为什么输出重复了很多次。
【问题讨论】:
-
您是否将输出重定向到文件?
-
你调用了两次
fork,第一次你甚至不关心它的结果(但你应该,而且你需要处理它的失败) -
在您的
printf中使用getpid(2),例如printf("a from pid %d\n", (int)getpid()); -
运行此程序的方式和位置很重要。你也应该说明预期的输出。