errno を使用してエラーの種類を示すシステム/ライブラリ呼び出しを使用するマルチスレッド アプリケーションを作成している場合、errno を安全に使用する方法はありますか? そうでない場合、エラーが発生したというだけでなく、発生したエラーの種類を示す別の方法はありますか?
7942 次
2 に答える
36
標準ライブラリがマルチスレッドに対応している場合、おそらく、スレッド ローカル エラーの戻り値を返す関数呼び出しに#define
変更される があります。errno
ただし、これを使用するには、通常、宣言に依存するのではなく、を含める必要があります。<errno.h>
extern
この問題に対処する記事Thread-safety and POSIX.1を見つけました。
于 2009-01-16T07:49:26.657 に答える
19
man errno
言う:
errnoは、ISO C標準によって、int型の変更可能な左辺値として定義されており、明示的に宣言してはなりません。errnoはマクロである可能性があります。errnoはスレッドローカルです。1つのスレッドで設定しても、他のスレッドでの値には影響しません。
于 2009-01-16T08:54:40.253 に答える