通常,位于sys / types.h文件中的一些常量标志值将作为第三个参数传递给semget()
函数。但是,为项目提供给我们的一段代码包含这样的semget()
函数调用:
sem_id = semget(SEMKEY, 1, 0) // accessing pre-defined semaphore
semid是一个全局变量,SEMKEY是一个常量。
将零传递给semflg值意味着什么?我们可以说当访问之前定义的信号量时,我们将semflg参数设置为零吗?
答案 0 :(得分:1)
不完全是因为即使IPC_CREAT
不是,也可以设置其他标志,但是没有用。 POSIX只是说(关于开放):
信号量标识符及其关联的semid_ds数据结构和 创建了一组相关的nsems信号量(请参阅参考资料) 如果满足下列条件之一,则输入密钥:
参数键等于IPC_PRIVATE。
参数键还没有信号量标识符 与之相关联(semflg& IPC_CREAT)非零。
因此,当然, semflg = 0 暗示无创作。但没有创作并不意味着 semflg = 0 。