1. 程式人生 > >FIFO阻塞式的開啟和讀寫,管道阻塞式的讀寫

FIFO阻塞式的開啟和讀寫,管道阻塞式的讀寫

最近看網路程式設計卷2時,對其中的圖4-21表格的內容感覺翻譯得比較生澀,這裡自己通過程式驗證後重新用自己的語言組織了一下。

一、對於FIFO,需要open去開啟FIFO的讀端或是寫端的描述符。
1> 如果open的時候沒有指定O_NONBLOCK標誌,且open的是讀端時
   如果不存在此FIFO的已經開啟的寫端時,open會一直阻塞到有FIFO的寫端開啟;
   如果已經存在此FIFO的開啟的寫端時,open會直接成功返回。

2> 如果open的時候沒有指定O_NONBLOCK標誌,且open的是寫端時
   如果不存在此FIFO的已經開啟的讀端時,open會一直阻塞到有FIFO的讀端開啟;
   如果已經存在此FIFO的開啟的讀端時,open會直接成功返回。

二、從FIFO或者空管道讀寫
 1> read時,讀端fd沒有指定O_NONBLOCK標誌
    如果存在此FIFO或管道的已經開啟的寫端時,阻塞到FIFO或管道中有資料或者FIFO或管道的已經開啟的寫端全部被關閉為止。
    如果不存在此FIFO或管道的已經開啟的寫端時,read返回0;
 2> write時, 同read差不多,就不詳述了。