命名管道 匿名管道

2021-10-07 03:35:02 字數 631 閱讀 1232

「有名字」則可以通過「名字」開啟相同的管道進行通訊,沒有名字(在核心中沒有明確標識)只能通過:

#子程序複製父程序的方式實現通訊,複製了檔案描述符

#匿名管道只能用於具有親緣關係的程序間通訊。只要在建立程序之前建立管道,後邊的程序都可以實現通訊。

#命名管道可用於同一主機任意程序間通訊

作業系統在核心提供的一塊緩衝區(只要程序能夠訪問到這塊緩衝區就可以實現通訊)

建立管道時,作業系統會提供兩個操作控制代碼(檔案描述符),其中乙個用於從管道讀取資料,乙個向管道寫入資料

子程序通過複製父程序的方式,獲取到管道的操作控制代碼,進而實現訪問同乙個管道通訊

核心中的緩衝區沒有明確識別符號,其他程序無法直接訪問管道,匿名管道只能用於具有親緣關係的程序間通訊,因為匿名管道在建立的時候作業系統返回了兩個控制代碼,因此只能通過建立子程序,子程序複製父程序的方式獲取到這個管道的操作控制代碼,進而訪問同一塊緩衝區。

int pipe(int pipefd[2]);

建立乙個匿名管道,向使用者通過引數pipefd返回管道的操作控制代碼。

ipc :程序間通訊

pipefd[0]:管道的讀取端

pipefd[1]:管道的寫入端

有兩個元素的陣列就是兩個操作控制代碼

返回值:0成功 -1失敗

命名管道和匿名管道

我們知道程序間是可以通訊的。可以達到資料傳輸 資源共享 事件通知 程序控制等目的。程序間通訊主要包括管道 系統ipc,套接字等。管道分為三種 1 普通管道 int pipe int fds 2 返回值0表示成功,1表示失敗 fd 0 讀 fd 1 寫 子程序往管道中寫資料,寫資料時要關閉讀端 父程序...

命名管道與匿名管道

匿名管道 父程序 include include main process information pp 定義結構體security attributes變數 char text 匿名管道程式測試!dword writetext ss.nlength sizeof ss 填充結構體中的各成員 ss....

命名管道 TCP IP協議 匿名管道

對於命名管道,通常網路通訊互動性更強。乙個對等項直到另乙個對等項使用讀取命令請求資料時才傳送資料。在開始讀取資料前,網路讀取一般包括一系列窺視命名管道的資訊。這在慢速網路中可能花費非常多並導致過多的網路流量,其它的網路客戶端反過來也會受到影響。闡明所討論的是本地管道還是網路管道也很重要。如果伺服器應...