sigprocmask()에서 Set and Oldset(설정 및 이전 설정)
사용법을 완전히 이해하지 못했습니다.sigprocmask()
. 특히, 어떻게.set
그리고.oldset
그리고 그 구문의 작동과 사용 방법.
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
차단하려면 SIGUSR1이라고 몇 초간 말한 다음 차단 해제하고 처리하는 것을 예를 들어 설명해 주세요.
그 생각은 당신이 마스크를 제공하는 것입니다.set
, 효과적으로 신호의 목록입니다.how
인수는 마스크를 사용하여 무엇을 해야 하는지 말합니다.set
.
사용하실 수 있습니다.SIG_BLOCK
신호를 막다set
리스트, 또는SIG_UNBLOCK
차단을 해제할 수 있습니다목록에 설정되지 않은 신호는 변경되지 않습니다.SIG_SETMASK
목록에 있는 신호를 차단하고 목록에 설정되지 않은 신호의 차단을 해제합니다.
예를 들어, 이전 차단 목록이{SIGSEGV, SIGSUSP}
그리고 당신은 전화를 합니다.sigprocmask
다음과 같은 논거로:
sigset_t x;
sigemptyset (&x);
sigaddset(&x, SIGUSR1);
sigprocmask(SIG_BLOCK, &x, NULL)
이제 새 차단 목록은{SIGSEGV, SIGSUSP, SIGUSR1}
.
전화하면sigprocmask
이제 다음과 같은 논쟁을 합니다.
sigprocmask(SIG_UNBLOCK, &x, NULL)
새 차단 목록은 원래대로 돌아갈 것입니다.{SIGSEGV, SIGSUSP}
.
전화하면sigprocmask
이제 다음과 같은 논쟁을 합니다.
sigprocmask(SIG_SETMASK, &x, NULL)
이제 새 차단 목록이 다음과 같이 설정됩니다.{SIGUSR1}
.
그oldset
인수는 이전 차단 목록이 무엇이었는지 알려줍니다.이 선언문이 있는 경우:
sigset_t y;
그리고 우리는 앞의 예들의 코드를 다음과 같이 부릅니다.
sigprocmask(SIG_BLOCK, &x, &y)
이제 우리는 다음과 같습니다.
y == {SIGSEGV, SIGSUSP}
지금 하는 경우:
sigprocmask(SIG_UNBLOCK, &x, &y)
우리는 얻을 것입니다.
y == {SIGSEGV, SIGSUSP, SIGUSR1}
그리고 우리가 할 경우:
sigprocmask(SIG_SET, &x, &y)
우리는 이것을 얻을 것입니다.
y == {SIGSEGV, SIGSUSP}
이것이 블로킹 세트의 이전 값이기 때문입니다.
언급URL : https://stackoverflow.com/questions/25261/set-and-oldset-in-sigprocmask
'programing' 카테고리의 다른 글
폼을 편집할 때마다 확인하기 위해 $dirty in angularjs 사용 (0) | 2023.10.05 |
---|---|
LINQ의 Select 명령에 해당하는 파워셸? (0) | 2023.10.05 |
푸시 사이드 메뉴로 신체 스크롤 방지 방법 (0) | 2023.10.05 |
와일드카드 호스트를 사용한 MariaDB 부여 권한이 작동하지 않습니다. (0) | 2023.09.25 |
도커 Ubuntu 이미지 내에 패키지를 설치할 수 없습니다. (0) | 2023.09.25 |