c++ - 获取 POSIX 信号量的名称

标签 c++ linux unix posix semaphore

有什么方法可以在 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/

相关文章:

c++ - 以GPU(OpenGL)为目标的Halide-基准测试并使用HalideRuntimeOpenGL.h

c++ - 如何在 C++ 函数模板中指定默认的非模板参数初始值设定项?

linux - 为什么我需要 sudo 才能在 Linux 上使用 leiningen(安装在/bin 中)?

linux - ubuntu 中的 Git 项目更新

linux - fork 后线程安全吗?

c++ - 多线程 galib247 遗传算法卡在局部最大值

linux - 如何获取USB存储设备的设备名称?

linux - 如何将重命名cmd指向目录

unix - 将列添加到 ID 匹配的另一个文件中的文件

c++ - C++ Eigen 。需要建议