linux c之通过消息队列实现进程通信
生活随笔
收集整理的這篇文章主要介紹了
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函數
該函數用來把消息添加到消息隊列中。它的原型為:
msgid是由msgget函數返回的消息隊列標識符。
總結
以上是生活随笔為你收集整理的linux c之通过消息队列实现进程通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux c之提示format‘%d’
- 下一篇: linux c之((void *) -