linux中程序間如何通訊的?

2021-07-11 01:25:22 字數 734 閱讀 1077

因為程序和執行緒不一樣,他們各自的位址空間不同,互不干擾,主要有以下通訊方式。

2,訊號量:你作為同步的一種辦法,當然也算是通訊的一種了,因為多個程序共同依靠訊號量來改變自己的狀態,例如乙個只儲存0,1的訊號量,乙個程序進入臨界區執行p(sv)訊號量減1為0,另乙個程序會因為訊號量為0而掛起,當前乙個程序離開了臨界區的時候,後乙個程序恢復執行,兩個程序都執行完了後沒有程序等待(掛起)就執行v(sv)加一。

3,(匿名)管道:單向的、先進先出的、無結構的、固定大小的位元組流,用於不同程序的通訊,例如:

ls -l | grep string
|就是管道,程序ls向螢幕的標準輸出重定向到grep程序的輸入,其中管道空的讀程序阻塞,管道滿時寫程序阻塞。

4,(命名)管道:也就是fifo(先進先出)這點和匿名管道類似,不同在於命名管道是即可以讀也可以寫的。。

5,訊息佇列:和管道類似,在系統核心中是以訊息鍊錶的形式出現。

6,套接字:socket,即套接字是一種通訊機制,憑藉這種機制,客戶/伺服器(即要進行通訊的程序)系統的開發工作既可以在本地單機上進行,也可以跨網路進行。也就是說它可以讓不在同一臺計算機但通過網路連線計算機上的程序進行通訊。也因為這樣,套接字明確地將客戶端和伺服器區分開來

7,作業系統通過訊號來通知某一程序發生了某一種預定好的事件;接收到訊號的程序可以選擇不同的方式處理該訊號,一是可以採用預設處理機制-程序中斷或退出,一是忽略該訊號,還有就是自定義該訊號的處理函式,執行相應的動作。

Linux中程序間通訊 共享儲存

今天同樣來看看程序間通訊,前面幾篇介紹了管道,訊號量,訊息佇列,這篇是共享記憶體。共享儲存允許兩個或更多程序共享一給定的儲存區。因為資料不需要在客戶程序和伺服器程序之間複製,所以這是最快的一種ipc。使用共享儲存時要掌握的唯一竅門是多個程序之間對一給定儲存區的同步訪問。若伺服器程序正在將資料放入共享...

python中程序間通訊

程序間通訊 磁碟互動 速度慢 不安全 socket 本地套接字 管道 訊息列隊 共享記憶體 訊號 訊號量 套接字 管道通訊 pipe 在記憶體中開闢一塊空間,對多個程序可見,通過管道 多個程序進行通訊 multiprocessing pipe fd1,fd2 pipe duplex true 功能 ...

vc 中程序間的通訊

vc 中程序間的通訊 2006 11 23 10 44 乙個是作業系統用來管理程序的核心物件。核心物件也是系統用來存放關於程序的統計資訊的地方 另乙個是位址空間,它包含所有的可執行模組或dll模組的 和資料。它還包含動態分配的空間。如執行緒堆疊和堆分配空間。每個程序被賦予它自己的虛擬位址空間,當程序...