作用:用于在不相關(guān)的進(jìn)程間交換數(shù)據(jù)
創(chuàng)建FIFO
int mkfifo(const char *pathname, mode_t mode)
成功返回0思灌,出錯(cuò)返回-1
當(dāng)打開一個(gè)FIFO時(shí)约啊,非阻塞標(biāo)志(O_NONBLOK)產(chǎn)生下列影響:
在一般情況中(沒有指定O_NONBLOCK)益愈,只讀open要阻塞到某個(gè)其他
進(jìn)程為寫而打開此FIFO挺据。類似地吉嫩,只寫open要阻塞到某個(gè)其他進(jìn)程為讀
而打開它磨隘。如果指定了O_NONBLOCK缤底,則只讀立即返回顾患。但是,如果沒有進(jìn)程已
經(jīng)為讀而打開一個(gè)FIFO个唧,那么只寫open將出錯(cuò)返回-1江解,其errno是ENXIO。
類似于管道徙歼,若用write寫一個(gè)尚無(wú)進(jìn)程為讀而打開的FIFO犁河,則產(chǎn)生信號(hào)
SIGPIPE。若某個(gè)FIFO的最后一個(gè)寫進(jìn)程關(guān)閉了該FIFO魄梯,則將為該FIFO
的讀進(jìn)程產(chǎn)生一個(gè)文件結(jié)束標(biāo)志
FIFO有下面兩種用途
- FIFO由shell命令使用以便將數(shù)據(jù)從一條管道線傳送到另一條桨螺,為此無(wú)需創(chuàng)
建中間臨時(shí)文件 - FIFO用于客戶進(jìn)程-服務(wù)器進(jìn)程應(yīng)用程序中,以在客戶進(jìn)程和服務(wù)器進(jìn)程
之間傳遞數(shù)據(jù)
常量PIPE_BUF說(shuō)明了一次性寫到FIFO的最大數(shù)據(jù)量酿秸,以確保操作的原子性