我已经读过perror()printf()都写入终端屏幕。但是perror()写入stderr,而printf()写入stdout。因此,要打印错误,为什么在perror()可以使用printf()的情况下使用ojit_code。

最佳答案

printf()无法写入stderrfprintf()可以。 perror()总是这样做。

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

10-06 06:33