当前位置: 技术问答>linux和unix
(菜鸟飞飞)问个stderr的问题
来源: 互联网 发布时间:2016-08-28
本文导语: 程序总有这么一段: if(!string) { fprintf(stderr,"out of memoryn"); //printf("out of memoryn"); exit(1); } 其中把fprintf换为下面的一句printf,也同样可以正常运行...
程序总有这么一段:
if(!string) {
fprintf(stderr,"out of memoryn");
//printf("out of memoryn");
exit(1);
}
其中把fprintf换为下面的一句printf,也同样可以正常运行啊。我看一个书上说 printf 在程序启动时(在main函数还没开始执行之前)会自动把终端设备打开,既然如此,为啥还需要stderr呢,已经if判错了。就让它输出不就得了。
求大侠解释!!
if(!string) {
fprintf(stderr,"out of memoryn");
//printf("out of memoryn");
exit(1);
}
其中把fprintf换为下面的一句printf,也同样可以正常运行啊。我看一个书上说 printf 在程序启动时(在main函数还没开始执行之前)会自动把终端设备打开,既然如此,为啥还需要stderr呢,已经if判错了。就让它输出不就得了。
求大侠解释!!
|
如果在Linux下
demo > demo.log 2> demo.err
就能看出区别了。
demo > demo.log 2> demo.err
就能看出区别了。
|
fprintf函数里面的stderr参数与stdout,stdin是三个标准设备文件的指针,当你操作文件的时候,把这三个指针的用法综合起来考虑,就可以体会出它们之间的差别。
|
如果没有stderr ,那么你如果想把stderr导入到一个文件的话就会很麻烦,它代表的是一个文件(类似设备) 是系统规定的。