2

パイプを使用して親プロセスから送信されたデータを読み取っています。親プロセスは、パイプの読み取り側を閉じ、書き込み側にデータを書き込みます。同様に、子は書き込み側をクローズし、読み取り側からデータを読み取ります。

しかし、私の場合、読み取り"-1"はエラー値であるを返しました。EAGAIN, EBADF, EIO読み取り呼び出しで発生したエラー (のような) をどのように見つければよいですか? ありがとう

4

3 に答える 3

4

読み取り呼び出しでどのエラー (EAGAIN、EBADF、EIO など) が発生したかを確認するにはどうすればよいですか?

印刷しerrnoます。さらに良いオプションはperror、呼び出しの直後に , を実行することです。

if (read(...) < 0)
    perror("read");

またはstrerror、自分でメッセージを取得する必要がある場合に使用します。

printf("%s\n", strerror(errno));

直接#include <errno.h>使用する場合は、必要になることに注意してください。errno

于 2013-02-28T07:00:37.037 に答える
2

Linux を使用している場合、次のコードは関連するエラー メッセージを文字列として出力します。

printf("%s", strerror(errno));
于 2013-02-28T07:01:33.010 に答える
1

移植性のない glibc 拡張機能です。簡単に試してみてください: printf( "%m" );

于 2013-02-28T19:03:18.180 に答える