2013-01-06 3 views
0

유닉스에서 신호 처리를 배우고 SIG_SETMASKo_setsigprocmask() 인 것을 이해하는 데 어려움을 겪고 있는데 무엇을합니까?유닉스에서의 신호 처리

set에는 차단 또는 차단 해제 할 신호 목록이 포함되어 있으며 SIG_BLOCK은 목록의 신호를 차단하고 SIG_UNBLOCK은 차단 해제 신호를 이해합니다.

sigprocmask(SIG_SETMASK,&set,& o_set); 

답변

3

Linux manpage은 이것을 잘 설명합니다.

신호 마스크의 이전 값은 해당 매개 변수가 null이 아닌 경우 마지막 매개 변수 (이전 세트)에 저장됩니다.

SIG_SETMASK은 현재 신호 세트를 설정합니다. 나는 그것에 대해 더 말할 것이 무엇인지 모르겠습니다 - SIG_BLOCKSIG_UNBLOCK은 현재 신호 마스크와 두 번째 매개 변수를 결합합니다. SIG_SETMASK은 현재 값에 관계없이 설정합니다.

POSIX 이런 식으로 설명한다 :

SIG_BLOCK
결과 세트는 현재 세트의 조합 및 신호 세트는 세트에 의해 지시되어야한다. SIG_SETMASK
결과 세트는 세트가 가리키는 신호 세트 여야합니다.
SIG_UNBLOCK
결과 세트는 현재 세트와 세트가 가리키는 신호 세트의 보수의 교차점이어야합니다.

+0

매트는 내 프로그램에서 sig_setmask를 친절하게 확인합니다. http://stackoverflow.com/questions/14184272/signals-handling-in-c – Alfred