根据我的理解fork(),这应该打印"Hello,World!" 曾经,因为之前只有一个过程fork被调用.但是,它会打印两次.奇怪的是,如果我添加一个\n字符串或使用puts()而不是printf(),它只打印一次.
#include<unistd.h>
#include<stdio.h>
int main() {
printf("Hello, World!");
fork();
}
Run Code Online (Sandbox Code Playgroud)
缓冲。
由于系统上的标准输出默认情况下是缓冲的,因此它不会立即打印。然而,在进程退出之前,缓冲区将被刷新。
由于fork复制父级的整个内存空间、文件描述符状态等,因此它还将复制需要打印的缓冲数据。
因此,除非您在分叉之前显式刷新标准输出缓冲区(通过附加\n到输出或调用fflush(stdout);),否则两个进程都将有要打印的缓冲输出。
| 归档时间: |
|
| 查看次数: |
1066 次 |
| 最近记录: |