fork() 方法的奇怪执行行为
Weird execution behaviour of fork() method
我写了一个 fork()
的简单示例,如下所示:
#include <sys/types.h>
void main()
{
printf("Stack overflow\n");
pid_t p = fork();
if ( p )
printf("I am parent\n");
else
printf("I am child\n");
return 0;
}
理想情况下,"Stack overflow" 应该只打印一次,但在我的结尾,字符串被打印了两次。我无法理解。有人可以帮忙吗?
这是一个刷新问题:你的程序运行很好,但是第一个printf
的输出只是在fork
发生后才交给标准输出。
尝试
fflush(stdout);
分叉前。它解决了这个问题。
我写了一个 fork()
的简单示例,如下所示:
#include <sys/types.h>
void main()
{
printf("Stack overflow\n");
pid_t p = fork();
if ( p )
printf("I am parent\n");
else
printf("I am child\n");
return 0;
}
理想情况下,"Stack overflow" 应该只打印一次,但在我的结尾,字符串被打印了两次。我无法理解。有人可以帮忙吗?
这是一个刷新问题:你的程序运行很好,但是第一个printf
的输出只是在fork
发生后才交给标准输出。
尝试
fflush(stdout);
分叉前。它解决了这个问题。