c中的fork()命令——这段简单代码的输出是什么
fork() command in c -- what is the output to this simple piece of code?
可能重复:
Unix fork()系统调用什么时候运行?
我看了维基百科,文章说,"fork()系统调用的目的是创建一个新进程,该进程成为调用者的子进程,之后父进程和子进程都将执行fork(
在这种情况下,这个代码执行什么:
printf("This is a fork!");
fork();
给定描述,它看起来只会说一次"This is a fork!",因为在fork()语句之后没有任何内容。然而,当我在linux盒子上测试它时,它打印了两次"这是一个叉子!"。那是哪一个呢?
谢谢。
printf的输出被缓冲;两个子进程都获得了缓冲区的副本;当每个子进程退出时,缓冲区被刷新两次。
printf
已缓冲其输出以供稍后显示。稍后发生在fork
之后,所以您会看到它两次。
将您的代码片段替换为:
printf("...");
fflush(stdout);
fork();
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 如何在没有函数的情况下编写此代码并使C++更简单?
- 一个非常简单的win32套接字代码,但工作错误
- boost::spirit--试图编译大多数简单代码的编译器错误
- 奇怪的 G++ 错误,带有关于左值和赋值的简单代码
- 运行简单的.oct文件时Octave崩溃,我的代码出了什么问题?
- 为什么 for 循环只接受这个简单代码中的最后一个字符串?
- 一个简单的 win32 多线程代码.这能行吗?
- 为什么括号在这个简单的代码中会有所不同
- 这段简单的代码有什么问题?
- 如何在C++编写简单的启动代码?
- 使用简单的 Indy 服务器代码进行访问冲突
- C++11 中的随机数:有没有一种简单的方法可以将生成器种子放在代码的一个位置,然后在不同的函数中使用它?
- C++ 使用简单的代码同时写入文件和控制台输出
- 程序告诉我初始化在编写简单的C ++代码时不需要初始化的变量
- 请解释为什么这个简单的C++(Qt)代码如此奇怪
- 需要帮助识别简单多线程代码中的错误
- 我写了这个简单的代码,应该计算一系列数组元素的最高数量,但结果很奇怪
- 代码简单