當前位置:編程學習大全網 - 源碼下載 - 壹個進程通信 的 linux程序編寫

壹個進程通信 的 linux程序編寫

在linux中使用消息隊列

linux提供了壹系列消息隊列的函數接口來讓我們方便地使用它來實現進程間的通信。它的用法與其他兩個system

v

pic機制,即信號量和***享內存相似。

1、msgget函數

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

int

msgget(key_t,

key,

int

msgflg);

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

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

msgsnd函數

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

int

msgsend(int

msgid,

const

void

*msg_ptr,

size_t

msg_sz,

int

msgflg);

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

msg_ptr是壹個指向準備發送消息的指針,但是消息的數據結構卻有壹定的要求,指針msg_ptr所指向的消息結構壹定要是以壹個長整型成員變量開始的結構體,接收函數將用這個成員來確定消息的類型。所以消息結構要定義成這樣:

struct

my_message{

long

int

message_type;

/*

the

data

you

wish

to

transfer*/

};

msg_sz是msg_ptr指向的消息的長度,註意是消息的長度,而不是整個結構體的長度,也就是說msg_sz是不包括長整型消息類型成員變量的長度。

msgflg用於控制當前消息隊列滿或隊列消息到達系統範圍的限制時將要發生的事情。

如果調用成功,消息數據的壹分副本將被放到消息隊列中,並返回0,失敗時返回-1.

  • 上一篇:荒野行動單人模式如何玩
  • 下一篇:查詢訂單界面源代碼
  • copyright 2024編程學習大全網