fork()方法的奇怪执行行为

时间:2015-07-04 17:06:37

标签: operating-system fork

我写了一个简单的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;
}

理想情况下,“堆栈溢出”应该只打印一次,但在我的结尾处,字符串打印两次。我无法理解。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

这是一个冲动的问题:你的程序运行得很好,但第一个fork的输出只在fflush(stdout); 发生后才移交给标准输出。

尝试

LayoutInflater.from(context)
分叉之前

它解决了这个问题。