我有一個程序會留下一些信號量不清,因此如果我運行它幾次,程序將會出現故障。我曾經在linux中使用以下命令來清理它們。在Mac OS X中清理信號量
ipcs -s | grep root |grep 666| cut -f2 -d' ' | xargs -I {} sudo ipcrm -s {}
但這不適用於Mac。我應該使用什麼命令在mac osx中解決此問題?
我有一個程序會留下一些信號量不清,因此如果我運行它幾次,程序將會出現故障。我曾經在linux中使用以下命令來清理它們。在Mac OS X中清理信號量
ipcs -s | grep root |grep 666| cut -f2 -d' ' | xargs -I {} sudo ipcrm -s {}
但這不適用於Mac。我應該使用什麼命令在mac osx中解決此問題?
一些系統出現在輸出字段之間添加額外的空間,所以你可能需要指定第三場代替:
ipcs -s | grep root |grep 666| cut -f3 -d' ' | xargs -I {} sudo ipcrm -s {}
我會認爲這只是一個短期的修復。
我遇到了一些與我工作的C代碼相同的問題,所以我編寫了一個簡單的C程序來按名稱刪除信號量。
這裏是代碼:
#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("");
}
}
}
編譯一次您就可以用旗語名稱列表終端調用程序刪除像這樣:
$ ./semrm <name_1> <name_2> ... <name_n>
假設可執行文件被命名爲semrm
理想情況下,我會建議您修復導致信號量未被打開的錯誤,但爲了回答這個問題,能否請您在mac os上爲'ipcs -s'提供輸出x系統? – chkdsk