首页 > 解决方案 > 在 mac os 上,如何使用命令行删除 IPC 中名为 POSIX 的信号量?

问题描述

我在我的程序中创建了一些名为 POSIX 的信号量sem_open()

sem_t semfoo = sem_open("/semfoo", O_CREAT | O_EXCL, S_IREAD | S_IWRITE, 10);

并删除它sem_unlink()

sem_unlink("/semfoo");

有时当程序不正确退出时,sem_unlink()没有执行。所以信号量仍然存在于共享内存中。然后我的下一次运行将因此而崩溃。我必须创建另一个.c文件才能手动取消链接。

我知道/dev/shm在linux中有检查信号量是否留在共享内存中,但不适用于mac os。我也试过ipcs -l,但没有列出,

T     ID     KEY        MODE       OWNER    GROUP
Message Queues:

T     ID     KEY        MODE       OWNER    GROUP
Shared Memory:

T     ID     KEY        MODE       OWNER    GROUP
Semaphores:

那么是否有一些命令行工具可以用来检查和删除 mac os 上共享内存中的信号量,这样我就不需要创建新.c文件来执行此操作。谢谢。

标签: macoscommand-lineposixipcsemaphore

解决方案


推荐阅读