Linux程式間通訊有幾種方式?這8個你都知道嗎?
Linux程式間通訊有幾種方式?所謂程式間通訊,就是在不同程式之間傳播或交換資訊,Linux支援多種程式間通訊機制,常見的方式如下:
程式間通訊(IPC,Interprocess communication)是一組程式設計介面,讓程式設計師能夠協調不同的程式,使之能在一個作業系統裡同時執行,並相互傳遞、交換資訊。這使得一個程式能夠在同一時間裡處理許多使用者的要求。因為即使只有一個使用者發出要求,也可能導致一個作業系統中多個程式的執行,程式之間必須互相通話。IPC介面就提供了這種可能性。每個IPC方法均有它自己的優點和侷限性,一般,對於單個程式而言使用所有的IPC方法是不常見的。
1、無名管道通訊
無名管道(pipe):管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程式間使用,程式的親緣關係通常是指父子程式關係。
2、高階管道通訊
高階管道(popen):將另一個程式當做一個新的程式在當前程式程式中啟動,則它算是當前程式的子程式,這種方式我們稱為高階管道方式。
3、有名管道通訊
有名管道(named pipe):有名管道也是半雙工的通訊方式,但是它允許無親緣關係程式間的通訊。
4、訊息佇列通訊
訊息佇列(message queue):訊息佇列是由訊息的連結串列,存放在核心中並由訊息佇列識別符號標識,訊息佇列克服了訊號傳遞資訊少、管道只能承載無格式位元組流以及緩衝區大小受限等缺點。
5、訊號量通訊
訊號量(semophore):訊號量是一個計數器,可以用來控制多個程式對共享資源的訪問,它常作為一種鎖機制,防止某程式正在訪問共享資源時,其他程式訪問該資源。因此,主要作為程式間以及同一程式內不同執行緒之間的同步手段。
6、訊號
訊號(sinal):訊號是一種比較複雜的通訊方式,用於通知接收程式某個事件已經發生。
7、共享記憶體通訊
共享記憶體(shared memory):共享記憶體就是對映一段能被其他程式所訪問的記憶體,這段共享記憶體由一個程式建立,但多個程式都可以訪問。共享記憶體是最快的IPC方式,它是針對其他程式間通訊方式執行效率低而專門設計的。它往往與其他通訊機制,如訊號量,配合使用,來實現程式間的同步和通訊。
8、套接字通訊
套接字(socket):套接字也是一種程式間通訊機制,與其他通訊機制不同的是,它可用於不同機器間的程式通訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2846013/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是程式間通訊?Linux程式間通訊有幾種方式?Linux
- 程式間通訊是什麼?Linux程式間通訊有幾種方式?Linux
- 程式間的幾種通訊方式
- 你知道黑客的入侵方式都有哪些嗎?這些你知道幾個?黑客
- T面試題:程式間的通訊方式有哪幾種?面試題
- 這幾個好用的Python開源框架,你都知道嗎?Python框架
- Linux伺服器有哪些防護要點?這幾個你知道嗎?Linux伺服器
- 關於Linux系統,這些你都知道嗎?Linux
- Linux程式間的通訊方式有哪些?Linux入門教程Linux
- 程式間通訊方式有哪些?
- Python有哪幾種編碼方式?這幾類必須知道!Python
- Linux有哪些虛擬機器?看看這些,你知道幾個!Linux虛擬機
- 雲端計算擁有這8個特點你知道嗎?
- iOS這些小技巧你都知道嗎iOS
- 你知道JavaScript的繼承有幾種寫法嗎?JavaScript繼承
- 在Linux中,程序間通訊方式有哪些?Linux
- 程式間的五種通訊方式介紹
- 聊一聊Vue元件模版,你知道它有幾種定義方式嗎?Vue元件
- Linux 程式間通訊的六種機制Linux
- 收藏!這些 IDE 使用技巧,你都知道嗎IDE
- 這些操作刪除console.log程式碼,你都知道嗎
- Go 泛型的這 3 個核心設計,你都知道嗎?Go泛型
- 程式間通訊——LINUXLinux
- Linux程式間通訊Linux
- 程式間的五種通訊方式介紹-詳解
- 8個Python爬蟲框架,你知道幾個?Python爬蟲框架
- Python 五個有趣的彩蛋,你都知道嗎?Python
- 單例模式的七種寫法,你都知道嗎?單例模式
- Linux系統程式設計之程式間通訊方式:管道(二)Linux程式設計
- Linux系統程式設計之程式間通訊方式:管道(一)Linux程式設計
- Linux系統程式設計之程式間通訊方式:訊息佇列Linux程式設計佇列
- Linux程式間通訊-eventfdLinux
- Reviewbot 開源 | 這些寫 Go 程式碼的小技巧,你都知道嗎?ViewGo
- SSD固態硬碟使用的五個誤區,這些你都知道嗎?硬碟
- Chrome DevTools中的這些騷操作,你都知道嗎?Chromedev
- 學習Python這些面試題你都知道嗎?Python面試題
- Linux 主流發行版本,你都知道哪個?Linux
- linux系列之: 你知道檢視檔案空間的兩種方法嗎?Linux