semflg semget函数的值

时间:2018-04-13 20:22:21

标签: c posix semaphore

通常,位于sys / types.h文件中的一些常量标志值将作为第三个参数传递给semget()函数。但是,为项目提供给我们的一段代码包含这样的semget()函数调用:

sem_id = semget(SEMKEY, 1, 0) // accessing pre-defined semaphore

semid是一个全局变量,SEMKEY是一个常量。

将零传递给semflg值意味着什么?我们可以说当访问之前定义的信号量时,我们将semflg参数设置为零吗?

1 个答案:

答案 0 :(得分:1)

不完全是因为即使IPC_CREAT不是,也可以设置其他标志,但是没有用。 POSIX只是说(关于开放):

  

信号量标识符及其关联的semid_ds数据结构和   创建了一组相关的nsems信号量(请参阅参考资料)   如果满足下列条件之一,则输入密钥:

     
      
  • 参数键等于IPC_PRIVATE。

  •   
  • 参数键还没有信号量标识符   与之相关联(semflg& IPC_CREAT)非零。

  •   

因此,当然, semflg = 0 暗示无创作。但没有创作并不意味着 semflg = 0