本質:
特點:
實現方式:
侷限性:
匿名管道:
僅適用於有血緣關係的程序通訊.
//本功能實現的是 ps axu |grep bash
//通過呼叫 ps 和 grep命令 ,然後分別將他們的輸出 和 輸入的檔案描述符改變. 從終端改入到管道中.
intmain
(int argc,
char
*ar**)
pid_t pid =
fork()
;if(pid ==-1
)//父程序 ps aux 子程序執行 後半段 grep "bash"
pipe建立匿名管道
pipe建立的管道為匿名管道,匿名管道只能在有關係的程序之間使用,例如父程序和子程序,由同乙個父程序建立的子程序或稱為兄弟程序 如圖所示若管道只有乙個,並且管道只能程序單向通訊,因此,在子程序繼承父程序的檔案描述符之後,父程序關閉fd 0 檔案描述符,子程序關閉fd 1檔案描述符,這樣父程序和子程序...
命名管道 匿名管道
有名字 則可以通過 名字 開啟相同的管道進行通訊,沒有名字 在核心中沒有明確標識 只能通過 子程序複製父程序的方式實現通訊,複製了檔案描述符 匿名管道只能用於具有親緣關係的程序間通訊。只要在建立程序之前建立管道,後邊的程序都可以實現通訊。命名管道可用於同一主機任意程序間通訊 作業系統在核心提供的一塊...
命名管道和匿名管道
我們知道程序間是可以通訊的。可以達到資料傳輸 資源共享 事件通知 程序控制等目的。程序間通訊主要包括管道 系統ipc,套接字等。管道分為三種 1 普通管道 int pipe int fds 2 返回值0表示成功,1表示失敗 fd 0 讀 fd 1 寫 子程序往管道中寫資料,寫資料時要關閉讀端 父程序...