먼저 보류 중인 신호 세트가 무엇인지 살펴보겠습니다. 신호가 생성되어 목적지에 도달하는 과정을 신호 전달이라고 합니다. 신호 생성부터 전달까지의 중간 상태를 신호의 보류 상태라고 합니다. 보류 상태의 이유는 신호가 차단되었기 때문일 수 있습니다. 즉, 신호 마스크 워드(또는 차단된 신호 세트)의 해당 비트가 1로 설정되어 있기 때문일 수 있습니다. 차단 신호 세트와 보류 신호 세트는 모두 커널에 의해 유지됩니다. 전체 과정은 아래 그림에 나와 있습니다:
때로는 특정 신호를 차단해야 하므로 차단 신호 세트를 수정해야 합니다. 그렇다면 차단 신호 세트를 어떻게 수정합니까? 시스템이 제공하는 한 가지 방법은 먼저 차단 신호 세트와 동일한 세트를 만든 다음 이를 사용하여 차단 신호 세트를 수정하는 것입니다.
시스템은 일련의 신호 세트 설정 기능을 제공합니다. 이러한 기능은 다음과 같습니다:
으아악위 기능을 사용하여 신호 세트를 생성한 후 차단 신호 세트를 변경하는 방법은 무엇입니까? 시스템은 sigprocmask 기능이라는 또 다른 기능을 제공합니다. sigprocmask 기능은 신호를 차단하거나 신호를 차단 해제하는 데 사용할 수 있습니다. 그 핵심은 차단 신호 세트를 변경하기 위해 만든 신호 세트를 사용하는 것입니다.
함수 프로토타입:
으아악반환 값:
성공: 0; 실패: -1, errno 설정
매개변수 설명:
set: 들어오는 매개변수는 비트맵입니다. 세트의 어떤 비트가 1인지는 현재 프로세스에 의해 차단된 신호를 나타냅니다.
oldset: 나가는 매개변수, 이전 신호 마스크 세트를 저장합니다. 이는 setitimer와 다소 유사합니다.
어떻게 매개변수 값:
현재 신호 마스크 단어가 마스크라고 가정
1.SIG_BLOCK: 이 값으로 어떻게 설정되면 차단해야 하는 신호를 나타냅니다. 마스크 = 마스크 세트
와 동일2.SIG_UNBLOCK: 어떻게 설정되면 차단을 해제해야 하는 신호를 나타냅니다. 마스크와 동일 = 마스크 & ~세트
3.SIG_SETMASK: How가 이것으로 설정되면 set은 원래 마스크를 대체하는 데 사용되는 새 마스크 세트를 나타냅니다. 마스크 = 설정과 동일합니다. sigprocmask를 호출하여 여러 현재 신호의 차단을 해제하는 경우 sigprocmask가 반환되기 전에 최소한 하나의 신호가 전달됩니다.
대기 중인 신호 세트를 어떻게 읽나요? 시스템은 서명 기능을 제공합니다.
함수 프로토타입:
으아악매개변수 설명:
발신 매개변수를 설정합니다.
반환 값:
반환 값: 성공: 0, 실패: -1, errno 설정
예: 모든 일반 신호의 보류 상태를 화면에 인쇄합니다.
으아악위 내용은 Linux 신호 세트 연산 기능에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!