我正在编写一个短程序来轮询命名管道的缓冲区。为了测试它,我将登录到“nobody”并回显到管道中。当它挂起时,我从另一个用户登录并运行读取缓冲区的程序。当它运行时,程序什么也不返回,并且另一个用户从系统中注销。这是读取功能:
void ReadOut( char * buf )
{
ZERO_MEM( buffer, BUF_SIZE );
int pipe = open( buf, O_RDONLY | O_NONBLOCK );
if( pipe < 0 )
{
printf( "Error %d has occured.\n" , pipe );
return;
}
while( read( pipe, buffer, 2 ) > 0 ) printf( "%s \n" , buffer );
close( pipe );
return;
}