问题描述
- exec()函数族疑问,输出不是预料的结果
-
有两个C源代码文件test.c和file.ctest.c代码如下:
#include
#include
#include
int main(int argc, char argv[])
{
if(0==fork())
{
printf("a");
execlp("./file",(char)NULL);
}
else
{ wait(NULL);
printf("b);
}return 0;
}
file.c代码如下:
#includeint main(void)
{
printf("c");
return 0;
}我先gcc file.c -o file
然后gcc test.c -o test
输出bc
但是将test.c中的printf("a");改为printf("an");之后就输出abc;
我的疑问就在于:为什么加了n之后,就能输出a,而没有加n就不能输出a
???实在不解!!!
解决方案
因为你没加/n的时候输出的a被b覆盖了
解决方案二:
这就叫做行缓存的机制
n 会刷新缓冲区,使得a输出,不然不会,使用fflsuh(stdout);好像也可以,。。
时间: 2024-10-26 13:09:47