簡體   English   中英

命名管道終止會話

[英]named pipe terminating session

我正在編寫一個輪詢命名管道緩沖區的簡短程序。 為了進行測試,我將登錄“ 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時,此功能也有效

當您將文件描述符標記為非阻塞時,通常可以阻塞的所有操作(例如read(2)write(2) )都將返回-1並設置errno = EAGAIN

因此,在您的情況下, read立即返回-1,表示“ 我現在尚未准備好,請稍后再試 ”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM