我正在写一个简短的程序,轮询命名管道的缓冲区。为了测试它,我将登录到“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;
}
'写'功能,类似于此,工作得很好。当我知道O_NONBLOCK – tay10r 2013-03-17 04:48:42