実際の errno
値は、C および C++ 標準では定義されていません。そのため、特定の (正の) 整数を返し、それが実装で使用される整数と衝突しないことを保証する方法はありません。C 標準で必要なマルコは次の 3 つだけです。
C11 ドラフト、7.5 エラー
<ブロック引用>マクロは
エドム
EILSEQ
エレンジ
int 型、明確な正の値を持つ整数定数式に展開され、#if 前処理ディレクティブでの使用に適しています。
だからあなたは他の errno
を知らない 値は実装で定義されます。
errno
値は、標準 C および POSIX では正の整数です。そのため、負の値を持つ独自の列挙を使用して、独自のエラー番号を定義できます。ただし、strerror/perror インターフェイスは使用できません。したがって、独自のエラー番号を解釈するには、strerror/perror の追加のラッパーが必要になる場合があります。
次のようなもの:
enum myErrors{
ERR1 = -1,
ERR2 = -2,
...
ERR64 = -64
};
char *my_strerror(int e)
{
if (e>=ERR1 && e<=ERR2)
return decode_myerror(e); // decode_myerror can have a map for
//your error numbers and return string representing 'e'.
else
return strerror(e);
}
perror
の同様のもの .
errno
も設定する必要があることに注意してください 0
まで errno
を確認するために「open-resource」を呼び出す前に 実際に関数によって設定されました。
このような状況では、標準の errno を完全に避け、独自のエラー列挙を定義します。 「オープン リソース」が複雑すぎず、エラー コードが返される可能性が高すぎる場合は、これを行うことができます。
Pythonモジュールはターミナルでは見つかりませんが、Pythonシェル、Linuxでは見つかりません
SELECT INTO OUTFILE 権限は拒否されましたが、ユーザーはディレクトリに書き込むことができます