【Linux系統編程】進程間通訊--消息隊列

     多進程在進行通訊時,有時可能需要數據的定向發送。比如進程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 刪除消息隊列

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章