信号量相关函数分析:
1.semget()信号创建函数,获取与某个键关联的信号量集标识
原型: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:超出系统限制
- semctl ();//控制信号量的信息。
原型:int semctl(int _semid ,int _semnum,int _cmd ……)
semid 信号量的标志码(ID),也就是semget()函数的返回值;
semnum, 操作信号在信号集中的编号。从0开始。
cmd 命令,表示要进行的操作。
下面列出的这些命令来源于百度,c