2
ヒントによるanother thread逆参照がセグメンテーション違反を引き起こすかどうかを判断するには、ポインタを分析する必要があります。アイデアは、このようなコードを記述することです:openとwriteでの/ dev/nullの特別な扱いは?
bool IsPointerValid(void* pPointer)
{
// when opening "/tmp/hugo" here, it works fine... but not with /dev/null??
int iFD = open("/dev/null", O_WRONLY);
int iBytesWritten = write(iFD, pPointer, 4);
close(iFD);
return iBytesWritten > 0;
}
をしかし、私はIsPointerValid(..)
に渡すwhatevery、それは常にtrueを返します - iBytesWritten
は常に4
ですので。しかし、"/tmp/testfile"
またはfifoを開くと、期待どおりに動作します。NULLポインタをwrite(..)
に渡すと、-1
が返されます。
"/dev/null"
のこの特別な治療の理由は何ですか?
おかげで、
チャーリー
Hmmm ...しかし、それは悪いです。一時ファイルを作成せずにこの問題を回避するにはどうすればよいですか? – Charly
ポインタを逆参照するとsegfaultが発生するかどうかを知りたいので、逆参照してsegfaultを処理するのはなぜですか?それに必要なファイルはありません。 –
私はポインタを事前にチェックすることをお勧めします - それは分かりやすく分かりやすいからです。 – Charly