согласно подсказке от другого потока Я хочу проанализировать указатели, если их разыменование вызовет ошибки сегментации или нет.Идея состоит в том, чтобы написать код, подобный следующему:
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 он работает как ожидалось: передавая нулевой указатель на write(..)
, он возвращает -1
.
В чем причина такой специальной обработки "/dev/null"
?
Спасибо,
Чарли