首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Mac OS X中清除信号量

在Mac OS X中清除信号量
EN

Stack Overflow用户
提问于 2011-11-16 18:59:27
回答 2查看 2.1K关注 0票数 3

我有一个程序,它留下了一些未清理的信号量,因此如果我运行它几次,程序就会出错。我过去常常在linux中使用以下命令来清理它们。

代码语言:javascript
复制
ipcs -s | grep root |grep 666| cut -f2 -d' ' | xargs -I {} sudo ipcrm -s {}

但这在mac上不起作用。在mac osx中,我应该使用什么命令来解决此问题?

EN

回答 2

Stack Overflow用户

发布于 2014-03-21 21:53:24

某些系统似乎会在输出中的字段之间添加额外的空格,因此您可能需要指定第三个字段:

代码语言:javascript
复制
ipcs -s | grep root |grep 666| cut -f3 -d' ' | xargs -I {} sudo ipcrm -s {}

我会认为这只是一个短期的解决办法。

票数 1
EN

Stack Overflow用户

发布于 2016-03-05 16:04:41

我正在编写的一些C代码也遇到了同样的问题,所以我编写了一个简单的C程序来按名称删除信号量。

代码如下:

代码语言:javascript
复制
 #include <semaphore.h>
 #include <stdio.h>
 #include <errno.h>

 int main(int argc, char *argv[]) {
     for (int i = 1; i < argc; i++) {
         if (sem_unlink(argv[i]) != 0) {
             fprintf(stderr, "%s: ", argv[1]);
             perror("");
         }
     }
 }

编译后,您可以使用信号量名称列表从终端调用该程序,以便删除,如下所示:

代码语言:javascript
复制
$ ./semrm <name_1> <name_2> ... <name_n>

假设可执行文件名为semrm

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8150562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档