according to a hint from another thread I want to analyze pointers, if their dereferencing would cause an segmentation faults or not. The idea is to write code like this:
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 );
ret开发者_高级运维urn iBytesWritten > 0;
}
But whatevery I pass to IsPointerValid(..)
, it returns always true - because iBytesWritten
is always 4
. But when opening "/tmp/testfile"
or a fifo, it works like expected: Passing the NULL pointer to write(..)
, it returns -1
.
What is the reason for this special treating of "/dev/null"
?
Thanks,
Charly
Because it's a special file, so it brings its own definition of read
and write
. (The linux kernel implements polymorphism using function pointers in the driver layer). Apparently the version of write
provided by the /dev/null
device doesn't use the pointer you pass in.
精彩评论