歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux基礎知識 >> 實用技巧:Linux系統調用Msgget函數詳解

實用技巧:Linux系統調用Msgget函數詳解

日期:2017/3/2 15:05:20   编辑:Linux基礎知識
功能描述:

獲取與某個鍵關聯的消息隊列標識。消息隊列被建立的情況有兩種:

1.如果鍵的值是IPC_PRIVATE.

2.或者鍵的值不是IPC_PRIVATE,並且鍵所對應的消息隊列不存在,同時標志中指定IPC_CREAT.

如果新的消息隊列被建立,它關聯的msqid_ds數據結構初始化如下:

msg_perm.cuid 和 msg_perm.uid設為調用者的有效用戶標志;

msg_perm.CGId 和 msg_perm.gid設為調用者的有效用戶組標志;

msg_perm.mode最低9個位設為msgflg的最低9個位;

msg_qnum,msg_lspid,msg_lrpid,msg_stime和msg_rtime設為0;

msg_ctime設為當前時間;

msg_qbytes設為系統限制MSGMNB.

用法:

#include

#include

#include

int msgget(key_t key, int msgflg);

參數:

key:消息隊列關聯的鍵。

msgflg:消息隊列的建立標志和存取權限。

返回說明:

成功執行時,返回消息隊列標識值。失敗返回-1,errno被設為以下的某個值

EACCES:指定的消息隊列已存在,但調用進程沒有權限訪問它,而且不擁有CAP_IPC_OWNER權能

EEXIST:key指定的消息隊列已存在,而msgflg中同時指定IPC_CREAT和IPC_EXCL標志

ENOENT:key指定的消息隊列不存在同時msgflg中不指定IPC_CREAT標志

ENOMEM:需要建立消息隊列,但內存不足

ENOSPC:需要建立消息隊列,但已達到系統的限制

Copyright © Linux教程網 All Rights Reserved