当前位置: 技术问答>linux和unix
简单问题: stderr
来源: 互联网 发布时间:2015-02-01
本文导语: fprintf(stderr,"Test!");这条语句是什么意思?会出现什么结果?结果显示在屏幕上吗?有什么样的语句能代替它?stderr是标准错误输出,什么情况下使用它? | 简单写一个重定向标准输出到串口 i...
fprintf(stderr,"Test!");这条语句是什么意思?会出现什么结果?结果显示在屏幕上吗?有什么样的语句能代替它?stderr是标准错误输出,什么情况下使用它?
|
简单写一个重定向标准输出到串口
if (0 == fork())
{
close(1);
open("/dev/ttyS0", O_WRONLY);
execp("bc", "bc", 0);
perror("exec");
exit(1);
}
if (0 == fork())
{
close(1);
open("/dev/ttyS0", O_WRONLY);
execp("bc", "bc", 0);
perror("exec");
exit(1);
}
|
哈,这fprintf与printf是不一样的,两者的优先级就不一样
推荐使用fprintf,要知道在UNIX写C程序时,发生CORE DUMP错误时,printf是打印不出任何信息,但用fprintf的话,在发生CORE DUMP语句这前,是能够打印出信息来的。
推荐使用fprintf,要知道在UNIX写C程序时,发生CORE DUMP错误时,printf是打印不出任何信息,但用fprintf的话,在发生CORE DUMP语句这前,是能够打印出信息来的。
|
to violin9999(我的最爱):我不这样认为
printf可以看作fprintf(stdout,的一个宏,其实内部实现还是fprintf
标准实现时stdout是行缓冲的,stderr无缓冲
所以在core dump的时候,printf的结果不一定显示出来,而stderr是立即输出
stdin,stdout,stderr都可以重定向,当然也可以重定向到串口
printf可以看作fprintf(stdout,的一个宏,其实内部实现还是fprintf
标准实现时stdout是行缓冲的,stderr无缓冲
所以在core dump的时候,printf的结果不一定显示出来,而stderr是立即输出
stdin,stdout,stderr都可以重定向,当然也可以重定向到串口
|
如果你不是用输出重定向,那么fprintf(stderr,"Test!");等效与fprintf(stdout,"Test!");和printf("Test!");
stderr冲名字就知道是用于打印错误信息的,呵呵
stderr冲名字就知道是用于打印错误信息的,呵呵
|
管道
|
怎么才能输出重定向到其他地方呢?