LINUX程序間通訊

2021-06-18 19:01:03 字數 779 閱讀 5062

1.訊息佇列

訊息佇列是乙個存放在核心中的訊息鍊錶,由訊息佇列識別符號標識。它克服了訊號傳遞資訊量少、管道所傳送的是無格式位元組流以及緩衝區大小受到限制的缺點。由於訊息佇列存放在核心中,所以只有在核心重啟(os重啟)的時候或者顯式的刪除乙個訊息佇列時,它才能夠真正的被刪除。

訊息佇列當中,通訊的兩個程序之間可以是完全無關的程序。

訊息佇列中,程式通過ftok函式獲取的鍵值來確報雙方通訊的一致性.

函式原型:

key_t ftok( const char * fname, int id )

在一般的unix實現中,是將檔案的

索引節點號取出,前面加上子序號得到key_t的返回值。

如指定檔案的

索引節點號為65538,換算成16進製為0x10002,而你指定的id值為38,換算成16進製為0x26,則最後的key_t返回值為0x2610002。

這裡要注意的是,fname的真實目錄最好是實際存在的,否則key_t的返回值永遠為ffffff。

以下是網上找到的乙個例項:

#include #include 

#include #include

#include

#include struct msgbuf

;int main()

接收:#include #include

#include #include

#include

#include struct msgbuf

;int main()

Linux程序間通訊

程序間通訊 ipc interprocess communication 基本機制 訊號 管道及命名管道 訊息佇列 共享主存 訊號量 套接字。訊號 全稱軟中斷訊號,是在軟體層次上對中斷機制的一種模擬,它也是程序間通訊機制中唯一的非同步通訊機制。linux訊號處理函式可分為訊號安裝函式 訊號傳送函式和...

Linux程序間通訊

謝謝nonoob糾錯 我們在linux訊號基礎中已經說明,訊號可以看作一種粗糙的程序間通訊 ipc,interprocess communication 的方式,用以向程序封閉的記憶體空間傳遞資訊。為了讓程序間傳遞更多的資訊量,我們需要其他的程序間通訊方式。這些程序間通訊方式可以分為兩種 1.管道與...

Linux程序間通訊

謝謝nonoob糾錯 我們在linux訊號基礎中已經說明,訊號可以看作一種粗糙的程序間通訊 ipc,interprocess communication 的方式,用以向程序封閉的記憶體空間傳遞資訊。為了讓程序間傳遞更多的資訊量,我們需要其他的程序間通訊方式。這些程序間通訊方式可以分為兩種 1.管道與...