任何人都可以解释一下这段代码是如何工作的?
int main()
{
printf("Hello");
fork();
printf("World");
}
Run Code Online (Sandbox Code Playgroud)
打印:
HelloWorldHelloWorld
Run Code Online (Sandbox Code Playgroud)
我的确切问题是,为什么hello打印两次.是不是hello先打印,然后fork()执行?
此外,有时它打印:
HelloWorld
// then the reports....process exited with return value 0..etc etc.. then...//
HelloWorld
Run Code Online (Sandbox Code Playgroud)
为何输出?
Eri*_*ler 18
原因是:缓冲输出."Hello"在缓冲区中但在执行fork时尚未输出,因此forked进程以相同的缓冲区开头,包括相同的单词"Hello".然后,父和子输出"World",因此两者的总输出为"HelloWorld".
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |