macos - 在 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
文件来执行此操作。谢谢。
解决方案
推荐阅读
- android - 单击主屏幕时禁用应用程序图标
- ios - 如何以编程方式更改 statusBarStyle?
- javascript - 使用 javascript:如何创建一个警报窗口来显示提交的表单值?
- heroku - 手动部署和配置 App 后创建 Heroku App.json
- go - 改变我在合并排序中对通道的使用会杀死我的程序;或者我在处理 goroutine 时误解了范围?
- javascript - React - 在同一个文件中导出多个类
- jquery - ParseXML 不返回内容,控制台显示:(e){return k.each(this,e)
- c# - 实体框架一对多映射
- .net - AngleSharp:正确设置 Accept-Lang 标头
- java - JPA保存和DB触发器执行后如何获取实际索引