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.管道與...