semflg semget 函数的值

semflg Value of semget Function

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

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

semid为全局变量,SEMKEY为常量

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

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

A semaphore identifier with its associated semid_ds data structure and its associated set of nsems semaphores (see ) is created for key if one of the following is true:

  • The argument key is equal to IPC_PRIVATE.

  • The argument key does not already have a semaphore identifier associated with it and (semflg & IPC_CREAT) is non-zero.

所以,当然,semflg=0 意味着 没有创建 。但是 no creation 并不意味着 semflg=0.