programing

sigprocmask()에서 Set and Oldset(설정 및 이전 설정)

cafebook 2023. 10. 5. 23:31
반응형

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

반응형