有什么办法可以在C ++中获取名为semaphore的名称(sem_t)吗?
感谢所有人和最好的问候。
答案 0 :(得分:5)
不幸的是,没有。 POSIX semaphore spec中没有sem_name
(或任何你称之为)的功能。还没有特定于Linux的解决方法,因为它也不提供sem_name
,并且它不会将名称存储在sem_t
中,<bits/semaphore.h>
中定义了typedef union
{
char __size[__SIZEOF_SEM_T];
long int __align;
} sem_t;
/proc/sys/kernel/sem
文件/proc/sysvipc/sem
和sem_open
似乎也不包含此信息。
因此,您最好的选择是在执行{{1}}时自己存储名称,最好是在包装类中。有关示例包装类,请参阅this answer。