c - 运行 fork 并打印 hello

标签 c operating-system fork

Possible Duplicate:
Working of fork() in linux gcc
Why does this code print two times?

#include<stdio.h>
main()
{

 printf("hello\n");
 fork();

}

上面的代码打印“hello”一次。下面的代码打印“hello”两次。

#include<stdio.h>
main()
{

 printf("hello");
 fork();

}

上面的代码打印“hello”两次。

请有人解释一下这种奇怪的行为。

最佳答案

不保证会以这种方式表现,但通常的行为是:与

printf("hello");

“hello” 被打印到输出缓冲区,但该缓冲区尚未刷新。然后在

fork();

程序状态被复制到子进程,包括非空输出缓冲区。退出时,父级和子级的输出缓冲区都会被刷新。

使用换行符时,输出缓冲区会在 fork() 之前刷新。

关于c - 运行 fork 并打印 hello,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975312/

相关文章:

c - 中断 vector 处理程序地址

c - 从管道读取值不起作用

c - 关闭 GDB 中设置断点的确认

c - 使用unix域套接字并共享fd

c - 堆栈指针指向保留的内存

windows - 全局描述符表和局部描述符表

perl - 我可以让一个从浏览器启动的 Perl 脚本 fork 自身,而不是等待 child 结束吗?

c - Fork 和多处理

mysql - Eclipse CDT MySql 未知类型名称 ‘ulong’

c - 编译器如何知道堆栈或堆上是否分配了某些内容?