我正在使用管道读取父进程发送的数据。 父进程关闭读取结束并在管道的写入端写入数据。同样,child关闭write end并从read end读取数据。
但在我的情况下,read返回了"-1"
这是错误值。
我应该怎么发现,在读取调用中发生了哪个错误(如EAGAIN, EBADF, EIO
)?
感谢
答案 0 :(得分:4)
我应该如何找到,哪个错误(如EAGAIN,EBADF,EIO)有 读电话中发生了什么?
打印errno
。更好的选择是在通话结束后立即perror
。
if (read(...) < 0)
perror("read");
如果您需要自己收到消息,请使用strerror
:
printf("%s\n", strerror(errno));
请注意,如果直接使用#include <errno.h>
,则需要errno
。
答案 1 :(得分:2)
如果您使用linux,以下代码将以字符串形式打印相关的错误消息:
printf("%s", strerror(errno));
答案 2 :(得分:1)
非便携式glibc扩展,请尝试简单:printf(“%m”);