无法理解" system"的行为。 C程序中的函数调用

时间:2014-07-31 05:42:35

标签: c system call

当我运行以下程序时,system("ls -l")的输出显示在printf之前。为什么会这样?

#include<stdio.h>  
int main()  
{  
    printf("\nHello world");  
    system("ls -l"); // output of this statement is displayed before that of the preceding 
                     // printf statement
    return 0;  
}  

感谢。

1 个答案:

答案 0 :(得分:5)

printf已缓冲。 AFAIK缓冲区仅在存在\n或明确刷新它时(通过fflush(3))写入输出。

所以会发生什么,printf\n写入输出,然后缓冲字符串的其余部分。然后执行ls -l,当程序完成时,缓冲区会自动刷新。