「errno」の意味を知る方法は?

strerror() を使用できます エラー番号の人間が読める文字列を取得します。これは perror() によって出力される文字列と同じです ただし、標準エラー出力以外のエラー メッセージをフォーマットする場合に便利です。

例:

#include <errno.h>
#include <string.h>

/* ... */

if(read(fd, buf, 1)==-1) {
    printf("Oh dear, something went wrong with read()! %s\n", strerror(errno));
}

Linux は、明示的にスレッドセーフなバリアント strerror_r() もサポートしています .


perror を実行する代わりに エラー コードが表示された場合、errno の完全なリストを取得できます。 次のワンライナーを使用して、システム上の値:

cpp -dM /usr/include/errno.h | grep 'define E' | sort -n -k 3


Linux には、各エラー コードの意味をすぐに判断できる非常に優れたツールもあります。 Ubuntu の場合:apt-get install errno .

次に、たとえばエラー タイプ 2 の説明を取得したい場合は、errno 2 と入力します。

errno -l で すべてのエラーとその説明を含むリストが表示されます。以前の投稿者が言及した他の方法よりもはるかに簡単です。