c - perror() 和 printf() 之间的区别

标签 c linux stdout stderr

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

最佳答案

printf() 无法写入 stderrfprintf() 可以。 perror() 总是如此。

没有要求写入 stdoutstderr 写入终端屏幕 - 这取决于实现(因为并非所有系统甚至都有终端) .也没有要求写入 stdoutstderr 导致写入同一设备(例如,一个可以重定向到文件,而另一个重定向到管道).

perror() 将使用错误代码含义的内置知识来实现​​,由标准中的各种函数使用的静态 errno 表示库报告错误情况。特定值的含义是实现定义的(即它们在编译器和库之间有所不同)。

关于c - perror() 和 printf() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34103091/

相关文章:

c - 逻辑与语句

c - 链表错误

linux - 将扩展名放入 OpenSSL 的证书中

c - 棘手的指针和双指针令人头痛

C MPI - 批量生成多个线程

linux - 解析分数报告并提取分数总和和平均值

linux - 低功耗蓝牙 : Android Gatt-Client connect to Linux Gatt Server

rawvideo 的 FFmpeg 标准输出数据包大小

python - 如何以与 python2 和 python3 一起使用的方式将 utf8 写入标准输出

python - subprocess.PIPE 增量输出