Linux程式間通訊有幾種方式?這8個你都知道嗎?

老男孩IT教育機構發表於2021-12-06

  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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章