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