查找read()返回的错误

时间:2013-02-28 06:59:11

标签: c ipc pipe

我正在使用管道读取父进程发送的数据。 父进程关闭读取结束并在管道的写入端写入数据。同样,child关闭write end并从read end读取数据。

但在我的情况下,read返回了"-1"这是错误值。 我应该怎么发现,在读取调用中发生了哪个错误(如EAGAIN, EBADF, EIO)? 感谢

3 个答案:

答案 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”);

相关问题