c中的fork()命令——这段简单代码的输出是什么

fork() command in c -- what is the output to this simple piece of code?

本文关键字:代码 简单 是什么 输出 中的 fork 命令 段简单      更新时间:2023-10-16

可能重复:
Unix fork()系统调用什么时候运行?

我看了维基百科,文章说,"fork()系统调用的目的是创建一个新进程,该进程成为调用者的子进程,之后父进程和子进程都将执行fork(

在这种情况下,这个代码执行什么:

printf("This is a fork!");
fork();

给定描述,它看起来只会说一次"This is a fork!",因为在fork()语句之后没有任何内容。然而,当我在linux盒子上测试它时,它打印了两次"这是一个叉子!"。那是哪一个呢?

谢谢。

printf的输出被缓冲;两个子进程都获得了缓冲区的副本;当每个子进程退出时,缓冲区被刷新两次。

printf已缓冲其输出以供稍后显示。稍后发生在fork之后,所以您会看到它两次。

将您的代码片段替换为:

printf("...");
fflush(stdout);
fork();