posix 訊息佇列

2021-07-15 08:02:38 字數 590 閱讀 1009

posix 訊息佇列

訊息佇列的使用 1.

建立訊息佇列mq_open(const char *name, int oflag, mode_t mode,struct mq_attr*attr)

name: 訊息佇列的名稱,以「/」開頭

oflag: 標誌,o_rdonly(唯讀)o_wronly(只寫)o_rdwr(可讀可寫)o_creat(建立)o_excl (當訊息已存在時,返回eexist錯誤到errno中)o_nonblock(設定非阻塞)

mode: 在oflag中指定o_creat時,此引數是需要的。表示建立訊息佇列的許可權,s_irusr,s_iwusr,s_ixusr,s_irgrp,s_iwgrp,s_ixgrp,s_iroth,s_iwoth,s_ixoth相或組成或者寫成0777(表示rwxrwxrwx)等用八進位制表示也可以

attr: 在oflag中指定o_creat時,此引數是需要的。存放訊息佇列的屬性。其中mq_flags為0,表示阻塞,為o_nonblock為非阻塞。

struct mq_attr ;

maxmsg:訊息的個數

msgsize:訊息佇列的大小

POSIX訊息佇列

訊息佇列可認為是乙個訊息鍊錶,有寫許可權的執行緒可以往訊息佇列中寫訊息,有讀許可權的執行緒可以從佇列中讀取訊息,從而實現資料共享。每個訊息都是一條記錄,具有以下屬性 優先順序 無符號整數或長整數型別 訊息的資料部分長度 資料本身。1 相關函式 標頭檔案 include 建立和開啟 mqd t mq ...

Posix訊息佇列

posix訊息佇列與system v訊息佇列的主要差別 1 對posix訊息佇列的讀總是返回最高優先順序的最早訊息,對system v訊息佇列的讀則可以返回任意指定優先順序的訊息 2 當往乙個空佇列放置乙個訊息時,posix訊息佇列允許產生乙個訊號或啟動乙個執行緒,system v訊息佇列則不提供類...

POSIX訊息佇列

訊息佇列可以認為是乙個鍊錶。程序 執行緒 可以往裡寫訊息,也可以從裡面取出訊息。乙個程序可以往某個訊息佇列裡寫訊息,然後終止,另乙個程序隨時可以從訊息佇列裡取走這些訊息。這裡也說明了,訊息佇列具有隨核心的持續性,也就是系統不重啟,訊息佇列永久存在。3.2.1 建立 並開啟 關閉 刪除乙個訊息佇列 i...