【发布时间】:2019-03-22 14:00:49
【问题描述】:
我刚开始在c中使用system()函数,我想用system函数从它内部启动同一个可执行文件,所以我写了下面的程序
#include <stdlib.h>
#include <stdio.h>
int main()
{
printf("some string");
system("./a.out");
}
-我用gcc编译的-
当我运行程序时它没有打印任何东西,它一直在运行,直到我使用快捷键 ctrl-c 停止执行,然后它开始打印输出(直到我停止它才打印任何东西)
我认为语句应该按顺序执行,为什么直到我停止它才打印任何东西?
【问题讨论】:
-
system在后台使用fork。printf的输出被缓冲并且可以在任何时候被刷新——在执行子进程之前或之后。如果订单很重要,请通过添加\n或使用fflush(stdout)来明确刷新它.. -
输出流被缓冲,所以在刷新流或进程退出之前,您打印的文本可能不会出现。
-
解释一下。