パイプを使用して親プロセスから送信されたデータを読み取っています。親プロセスは、パイプの読み取り側を閉じ、書き込み側にデータを書き込みます。同様に、子は書き込み側をクローズし、読み取り側からデータを読み取ります。
しかし、私の場合、読み取り"-1"
はエラー値であるを返しました。EAGAIN, EBADF, EIO
読み取り呼び出しで発生したエラー (のような) をどのように見つければよいですか? ありがとう
読み取り呼び出しでどのエラー (EAGAIN、EBADF、EIO など) が発生したかを確認するにはどうすればよいですか?
印刷しerrno
ます。さらに良いオプションはperror
、呼び出しの直後に , を実行することです。
if (read(...) < 0)
perror("read");
またはstrerror
、自分でメッセージを取得する必要がある場合に使用します。
printf("%s\n", strerror(errno));
直接#include <errno.h>
使用する場合は、必要になることに注意してください。errno
Linux を使用している場合、次のコードは関連するエラー メッセージを文字列として出力します。
printf("%s", strerror(errno));
移植性のない glibc 拡張機能です。簡単に試してみてください: printf( "%m" );