日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux c之通过消息队列实现进程通信

發布時間:2023/12/4 linux 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux c之通过消息队列实现进程通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、消息隊列的介紹

消息隊列提供了一種從一個進程向另一個進程發送一個數據塊的方法。  每個數據塊都被認為含有一個類型,接收進程可以獨立地接收含有不同類型的數據結構。我們可以通過發送消息來避免命名管道的同步和阻塞問題。但是消息隊列與命名管道一樣,每個數據塊都有一個最大長度的限制,Linux用宏MSGMAX和MSGMNB來限制一條消息的最大長度和一個隊列的最大長度。

 

 

2、消息隊列需要使用的API介紹

1、msgget函數

該函數用來創建和訪問一個消息隊列。它的原型為:

int msgget(key_t, key, int msgflg);


與其他的IPC機制一樣,程序必須提供一個鍵來命名某個特定的消息隊列。msgflg是一個權限標志,表示消息隊列的訪問權限,它與文件的訪問權限一樣。msgflg可以與IPC_CREAT做或操作,表示當key所命名的消息隊列不存在時創建一個消息隊列,如果key所命名的消息隊列存在時,IPC_CREAT標志會被忽略,而只返回一個標識符。

它返回一個以key命名的消息隊列的標識符(非零整數),失敗時返回-1.

 

 

2、msgsnd函數

該函數用來把消息添加到消息隊列中。它的原型為:
  

int msgsend(int msgid, const void *msg_ptr, size_t msg_sz, int msgflg);


msgid是由msgget函數返回的消息隊列標識符。

總結

以上是生活随笔為你收集整理的linux c之通过消息队列实现进程通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。