semget,是獲取與某個鍵關聯的信號量集標識。
基本介紹
- 中文名:semget
- 函式原型:int semget()
- 功能描述:獲取與某個鍵關聯的信號量集標識
- 意義:函式
功能描述,用法,
功能描述
函式原型:int semget(key_t key,int nsems,int semflg);
功能描述
。信號量集被建立的情況有兩種:
1.如果鍵的值是IPC_PRIVATE。
2.或者鍵的值不是IPC_PRIVATE,並且鍵所對應的信號量集不存在,同時標誌中指定IPC_CREAT。
當調用semget創建一個信號量時,他的相應的semid_ds結構被初始化。ipc_perm中各個量被設定為相應
值:
sem_nsems被設定為nsems所示的值;
sem_otime被設定為0;
sem_ctime被設定為當前時間
用法
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(key_t key, int nsems, int semflg);
key:所創建或打開信號量集的鍵值。
nsems:創建的信號量集中的信號量的個數,該參數只在創建信號量集時有效。
semflg:調用函式的操作類型,也可用於設定信號量集的訪問許可權,兩者通過or表示
返回值說明:
如果成功,則返回信號量集的IPC標識符。
如果失敗,則返回-1,errno被設定成以下的某個值
EACCES:沒有訪問該信號量集的許可權
EEXIST:信號量集已經存在,無法創建
EINVAL:參數nsems的值小於0或者大於該信號量集的限制;或者是該key關聯的信號量集已存在,並且nsems
大於該信號量集的信號量數
ENOENT:信號量集不存在,同時沒有使用IPC_CREAT
ENOMEM :沒有足夠的記憶體創建新的信號量集
ENOSPC:超出系統限制