根据另一个线程的提示,我想分析指针,如果它们的取消引用会导致分段错误。这个想法是编写这样的代码:
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(..)
,它总是返回 true - 因为iBytesWritten
总是4
。但是当打开"/tmp/testfile"
或 fifo 时,它会像预期的那样工作:将 NULL 指针传递给write(..)
,它会返回-1
。
这种特殊待遇的原因是"/dev/null"
什么?
谢谢,
查理