我已经读过perror()
和printf()
都写入终端屏幕。但是perror()
写入stderr
,而printf()
写入stdout
。因此,要打印错误,为什么在perror()
可以使用printf()
的情况下使用ojit_code。
最佳答案
printf()
无法写入stderr
。 fprintf()
可以。 perror()
总是这样做。
无需写入stdout
或stderr
即可写入终端屏幕-这取决于实现方式(因为并非所有系统都具有终端)。也不要求写入stdout
和stderr
会导致写入同一设备(例如,一个可以重定向到文件,而另一个可以重定向到管道)。perror()
将使用关于错误代码含义的内置知识来实现,该知识由静态errno
表示,标准库中的各种功能均使用ojit_code来报告错误情况。特定值的含义是实现定义的(即,它们在编译器和库之间有所不同)。