我读到过 perror()
和 printf()
都写入终端屏幕。但是 perror()
写入 stderr
而 printf()
写入 stdout
。因此,要打印错误,为什么在 printf()
可以做到的情况下使用 perror()
。
最佳答案
printf()
无法写入 stderr
。 fprintf()
可以。 perror()
总是如此。
没有要求写入 stdout
或 stderr
写入终端屏幕 - 这取决于实现(因为并非所有系统甚至都有终端) .也没有要求写入 stdout
和 stderr
导致写入同一设备(例如,一个可以重定向到文件,而另一个重定向到管道).
perror()
将使用错误代码含义的内置知识来实现,由标准中的各种函数使用的静态 errno
表示库报告错误情况。特定值的含义是实现定义的(即它们在编译器和库之间有所不同)。
关于c - perror() 和 printf() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34103091/