程序間通訊總結(一)

2021-06-29 14:58:52 字數 646 閱讀 8333

了解程序間通訊(ipc,internet process connect),我們要搞明白程序間為什麼要通訊,會遇到哪幾種情況,針對這些情況我們分別怎麼來解決。下面我們來說下程序間通訊的目的,然後針對這些問題進行解決。

1,資料傳輸:乙個程序向另乙個程序傳輸資料。

2,資源共享:多個程序共享一段資源。

3,通知事件:乙個程序向其它程序傳送訊息,通知某種事件(是停止,是終止)。

4,程序控制:乙個程序完全控制另乙個程序,例如編譯器的除錯功能。

通常我們就是為了解決這幾個程序間問題,解決這些問題有哪些辦法呢?

管道:無名管道(pipe) 有名管道(fifo)

管道只能半雙工通訊,即某一時刻只能單向傳輸。要實現父子程序雙方互動通訊,需要定義兩個管道。管道有固定大小的緩衝區。管道又分為有名管道和無名管道(下篇文章介紹)。

system v程序間通訊:共享記憶體(share memory)、訊息佇列(message queue)訊號量(semaphore)

訊號量:用於管理對資源的訪問。

共享記憶體:用於在程式之間高效的共享資料 。

訊息佇列:在程式之間傳遞資料的一種簡單方法。

套接字(socket)

用於不同機器間的程序通訊,跨網路通訊。

之後會分多次詳細介紹這三種通訊。

程序間通訊和執行緒間通訊總結

死鎖的四個必要條件 資源有限 持有等待 不能搶占 迴圈等待條件 死鎖的應對方式 消除獨佔條件 即將資源無限增加或者變為共享 消除保持和請求條件 即乙個程序一次請求其所需要的所有資源,而不是請求一點資源做一點事情,但是這樣太過浪費。消除非搶占條件 即允許對資源進行搶占 消除迴圈等待條件 即產生迴圈等待...

程序間通訊(一)

為什麼程序間要通訊?1 資料傳輸 2 資源共享 3 通知事件 4 程序控制 程序間通訊方式 管道通訊 共享記憶體 訊息佇列 訊號通訊 一 管道通訊 管道是單向的 先進先出的,它把乙個程序的輸出和另乙個程序的輸入連線在一起。乙個程序 寫程序 在管道尾部寫入資料,另乙個程序 讀程序 從管道的頭部讀出資料...

程序間通訊(一)

半雙工管道 fifo 全雙工管道 命名全雙工管道 訊息佇列 訊號量 共享記憶體 套接字 多機其它為單機 管道 包括無名管道 命名管道 訊息佇列 訊號量共享儲存 scoket streams 等。其中,scoket和stream支援不同主機上的兩個程序ipc。一 管道 管道,通常指無名管道,是unix...