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);

分叉前。它解决了这个问题。