|
管道的建立和使用2.2.1管道功能 #包括intpipe(intfd[2]) 函數(shù)參數(shù)中有兩個(gè)文件描述符:FD[0]表示管道的讀取端,FD[1]表示管道的寫(xiě)入端。如果創(chuàng)建成功,將返回值0,否則將返回值-1。 2.2.2寫(xiě)流水線寫(xiě)功能 ret=寫(xiě)入(fd[1],buf,n) 如果管道已滿,它將被阻塞,直到在管道另一端讀取已進(jìn)入管道的數(shù)據(jù)。 2.2.3讀取管道讀取函數(shù)RET=read(FD[0],buf,n) 如果管道為空且寫(xiě)入結(jié)束文件描述符未關(guān)閉,則會(huì)阻止該管道。如果管道寫(xiě)入端已關(guān)閉,則返回0。如果管道不為空,則有兩種情況:(設(shè)置管道中實(shí)際有m個(gè)字節(jié))。如果n>=m,讀取m字節(jié);如果n<m,讀取n字節(jié)。實(shí)際讀取數(shù)是讀取的返回值。 2.2.4關(guān)閉功能 關(guān)閉write end導(dǎo)致read end的read調(diào)用返回0;關(guān)閉read end導(dǎo)致write end的write調(diào)用返回-1,errno設(shè)置為eppe。在write end的write函數(shù)退出之前,進(jìn)程將接收SIGPIPE信號(hào)(默認(rèn)處理是終止進(jìn)程,可以捕獲)。 2.2.5復(fù)制文件描述符dup2 intdup2(intfdl,intfd2); 將文件描述符FDL復(fù)制到fd2。Fd2可以是空閑文件描述符。如果fd2是打開(kāi)的文件,請(qǐng)關(guān)閉fd2。如果FD1不是有效的描述符,請(qǐng)不要關(guān)閉fd2。呼叫失敗。 |