多進程在進行通訊時,有時可能需要數據的定向發送。比如進程A向管道文件中寫入數據"helloworld",意將"hello"發送給進程B,將"world"發送給進程C,怎麼做到呢?這就需要消息隊列。
消息隊列的特點:
1.消息隊列是消息的鏈表,具有特定的格式:類型+數據。存放在內存中,由消息隊列標識符標識。
2.消息隊列允許一個或者多個進程寫入或讀取消息。
3.消息隊列可實現消息的隨機查詢,也可按照類型進行讀取。在同一類型上符合先進先出的規定。
API接口:
int msgget((key_t)key,int flag);//創建或獲取一個消息隊列,返回內核對象的標識符
int msgsnd(int msgid,const void* ptr,int datalen,int flag);//把消息添加到消息隊列中
int msgrcv(int msgid,void* ptr,int size,long type,int flag);//從消息隊列中獲取消息
int msgctl(int msgid,int cmd,struct msgid_ds* buff);//消息隊列的控制函數
命令:
ipcs -q 查看消息隊列
ipcrm -q msgid 刪除消息隊列