有什么方法可以在 C++ 中根据其 ID (sem_t) 获取 POSIX 命名信号量的名称?
感谢大家最诚挚的问候。
最佳答案
不幸的是,没有。没有 sem_name
(或者随便你怎么调用它)函数在 POSIX semaphore spec 中.也没有特定于 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
时自己存储名称,最好在包装类中。参见 this answer对于示例包装器类。
关于c++ - 获取 POSIX 信号量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5127072/