管道以*先出方式保存一定數量的數據。使用管道的時候一個進程從管道的一端寫,另一個進程從管道的另一端讀。在主進程中利用fork()函數創建一個子進程,這樣父子進程同時擁有對同一管道的讀寫句柄,因為管道沒有提供鎖定的保護機制,所以必須決定數據的流動方向,然后在相應進程中關閉不需要的句柄。這樣,就可以使用read()和write()函數來對它進行讀寫操作了。使用無名管道進行進程間通信的步驟概述如下:
①創建所需的管道;
②生成(多個)子進程;
③關閉/復制文件描述符,使之與相應的管道末端相關聯;
④關閉不需要的管道末端;
⑤進行通信活動;
⑥關閉所有剩余的打開文件描述符
⑦等待子進程結束。