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