linux c printf 的缓冲输出

关于linux下printf函数输出不及时的解决
2009-11-27 09:07
在linux系统下, printf函数是行缓冲式的输出,当 printf遇到\n时,或者缓冲区满时,才会将缓冲区里的内容刷新到标准输出(stdout).

因此, printf("p"); 等语句的显示不能立刻显示在屏幕上,但是printf("p\n"); 可以.

为了解决这个问题可以通过:fflush(stdout);解决,即变成:
printf("p");
fflush(stdout);
问题可以得到解决.
相对printf,使用fprintf的好处
 
 

printf函数的接口如下所示:
int printf( const char *format [, argument]... );
fprintf函数的接口如下所示:
int fprintf( FILE *streamconst char *format [, argument ]...);
从接口可以看出,使用printf函数会更方便些,少了一个函数参数。在通常情况下,的确是这样的。但在输出信息比较多,而且输出的信息有可能需要分类的化,使用fprintf的好处就体现出来了。
printf函数使用的输出设备是标准输出设,即stdout。在使用fprintf函数时,我们可以在第一个参数使用stdout或stderr进行输出信息分类。虽然stdout和stderr在正常情况下都指向标准输出设备,但通常程序运行时的命令行参数,可以分别控制stdout和stderr指向不同的设备或文件。这样,就可以达到对输出信息进行分类控制了。如下面的代码段所示:

test.c
//一般输出信息
extern char *info;
extern char *errinfo;
fprintf(stdout, "%s", info);
//特别关注的输出信息
fprintf(stderr, "%s", errinfo);

这样,在运行程序时,可以使用如下的命令行:
test 1&>1.txt 2&>2.txt
这样,一般输出信息可以存储到1.txt文件中,特别关注的输出信息可以存储到2.txt文件中。


Linux 终端运行多个程序

for in 5;do ./client done 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值