PIPE 使用介绍
文章目錄
- 一、pipe 簡介
- 二、pipe 代碼示例
一、pipe 簡介
pipe 也叫無名管道,有如下特點:
- 半雙工,同一時刻數據只能一端操作
- 數據只能從一端寫入,從另一端讀出
- 存儲在內存緩沖區,不存儲在文件系統中,只能用于父子進程通信
- 數據一旦從管道中讀走,就從管道中釋放空間
二、pipe 代碼示例
創建無名管道,其中 fd[0] 固定用于讀管道,而 fd[1] 固定用于寫管道
一般文件 I/O 的函數都可以用來操作管道( lseek() 除外)
默認情況當管道里沒有數據時,另一個進程調用 read() 函數從管道中讀數據是阻塞的
默認情況當管道里數據滿時,另一個進程調用 write() 函數向管道里寫數據也是阻塞的
通信過程中,當別的進程結束后,當前進程讀端口也關閉后,則再向管道內寫數據時進程會收到SIGPIPE 信號,默認動作為中斷當前進程,不過編程時可通過 fcntl() 函數設置文件的阻塞特性
總結
- 上一篇: 使用Exchange Server 20
- 下一篇: Elasticsearch学习4《Ela