Linux IPC通訊之-管道(PIPE、FIFO)
本篇文章將對Linux IPC通訊進行總結,也是自己對IPC認識的總結。本次主要介紹管道與有名管道。
管道(PIPE、FIFO):
1、使用場合:Linux IPC 通訊方式比較老的一種方式,比較適合數據量較小的通訊方式, 常用於控制命令。
ulimit -a 可以看到 pipe size (512 bytes, -p) 8 4k
2、特點:半雙工方式,如cmd process A->process B ACK process B->process A
3、有名管道與無名管道的區別:
無名管道適用於具有親緣關系的進程間通訊。
有名管道可以在任意進程間通訊,通過管道文件。
4、管道使用步驟
有名管道:
(1)mkfifo 創建管道文件
(2)open 打開管道文件,設置屬性,一般寫阻塞,讀非阻塞
(3)read
(4)write
無名管道:
(1)pipe
(2)設置阻塞、非阻塞屬性
(3)pipe[0] for read
pipe[1] for write
5、注意事項:
(1)SIGPIPE
如果管道通訊一方已關閉fd,而本方要在寫第一次報出此種信號,第二次段錯誤退出,要對此信號進行處理
(2)半雙工方式
6、特殊用法:
線程間通訊:適合於傳地址如大數據量的buf地址