2011-11-16 4 views
3

나는 세마포어를 제거하지 않은 채로 프로그램을 가지고 있으므로 몇 번 실행하면 프로그램이 잘못됩니다. 나는 그들을 정리하기 위해 리눅스에서 다음 명령을 사용했다.Mac OS X에서 세마포어 청소하기

ipcs -s | grep root |grep 666| cut -f2 -d' ' | xargs -I {} sudo ipcrm -s {} 

하지만이 기능은 Mac에서 작동하지 않습니다. mac osx에서이 문제를 해결하기 위해 어떤 명령을 사용해야합니까?

+0

이상 적으로 세마포어를 열어 놓은 버그를 수정하는 것이 좋습니다.하지만이 질문에 대답하기 위해 Mac OS에서 'ipcs -s'에 대한 출력을 제공 할 수 있습니까? x 시스템? – chkdsk

답변

1

일부 시스템 대신 3 필드를 지정해야 할 수도 있으므로, 출력의 필드 사이에 추가 공간을 추가 나타납니다

ipcs -s | grep root |grep 666| cut -f3 -d' ' | xargs -I {} sudo ipcrm -s {} 

나는이 짧은 기간 수정을 고려할 것입니다.

0

내가 작업하고있는 일부 C 코드에서 같은 문제가 발생하여 이름으로 세마포어를 제거하는 간단한 C 프로그램을 작성했습니다. 실행 파일을 가정

$ ./semrm <name_1> <name_2> ... <name_n> 

의 이름은 semrm : 일단 당신이 그런 것처럼 제거 세마포어 이름 목록 터미널에서 프로그램을 호출 할 수 있습니다 컴파일

#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(""); 
     } 
    } 
} 

: 여기

코드입니다