问题描述
- linux semget(key,0,0)是什么意思?
-
semget这样是创建了0个信号量吗?求详细解释,谢谢。怎么看不懂啊,求大神给小白 讲解下,谢谢
解决方案
int semget(key_t _key ,int _nsems,int _semflg);
功能:创建一个新的信号量或获取一个已经存在的信号量的键值。
返回值:成功返回信号量的标识码ID。失败返回-1;
参数:
_key 为整型值,用户可以自己设定。有两种情况:
1. 键值是IPC_PRIVATE,该值通常为0,意思就是创建一个仅能被进程进程给我的信号量。
2. 键值不是IPC_PRIVATE,我们可以指定键值,例如1234;也可以一个ftok()函数来取得一个唯一的键值。
_nsems 表示初始化信号量的个数。比如我们要创建一个信号量,则该值为1.,创建2个就是2。
_semflg :信号量的创建方式或权限。有IPC_CREAT,IPC_EXCL。
IPC_CREAT如果信号量不存在,则创建一个信号量,否则获取。
IPC_EXCL只有信号量不存在的时候,新的信号量才建立,否则就产生错误。
解决方案二:
nsems:创建的信号量集中的信号量的个数,该参数只在创建信号量集时有效。
不是创建的时候,0就无所谓了,这个时候去获取
时间: 2024-09-07 12:51:01