개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.08 02:49

pcntl_sigprocmask 함수에 대한 이해를 부탁드립니다

목록
  • CDN광신도 10시간 전 2025.08.08 02:49 새글
  • 2
    1
제가 pcntl_sigprocmask 함수를 사용하여 프로세스의 시그널 마스크를 설정하고자 합니다. 그러나 이 함수의 사용법과 시그널 마스크를 설정하는 방법에 대해 조금씩 혼동이 있습니다.

pcntl_sigprocmask 함수는 프로세스의 시그널 마스크를 설정할 때 사용하는 함수입니다. 시그널 마스크는 프로세스가 받을 수 있는 시그널의 집합을 의미합니다. 이 함수의 첫 번째 인자로 시그널 마스크를 설정할 때 사용하는 방법에 대해 궁금합니다.

예를 들어, 프로세스가 SIGINT (Ctrl+C) 시그널을 받지 않도록 설정하고 싶을 때, pcntl_sigprocmask 함수를 사용하여 시그널 마스크를 설정할 수 있습니다. 그러나 이때 사용하는 인자의 순서와 타입, 그리고 시그널 마스크를 설정하는 방법에 대해 더 자세히 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  10시간 전



    pcntl_sigprocmask 함수는 프로세스의 시그널 마스크를 설정할 때 사용하는 함수입니다. 이 함수의 첫 번째 인자는 옵션을 의미하며, 두 번째 인자는 시그널 마스크를 의미합니다.

    pcntl_sigprocmask 함수의 옵션은 다음과 같습니다.

    - PCNTL_SIG_BLOCK: 시그널 마스크를 설정합니다.
    - PCNTL_SIG_UNBLOCK: 시그널 마스크를 해제합니다.
    - PCNTL_SIG_SETMASK: 현재 시그널 마스크를 설정합니다.

    예를 들어, 프로세스가 SIGINT (Ctrl+C) 시그널을 받지 않도록 설정하고 싶다면, 다음 코드를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $old_mask = pcntl_sigprocmask(PCNTL_SIG_BLOCK, array(SIGINT));
    
    


    이 코드는 SIGINT 시그널을 받지 않도록 설정합니다. $old_mask 변수에는 이전 시그널 마스크가 저장됩니다.

    또한, 시그널 마스크를 설정할 때 사용하는 타입은 array 타입입니다. array 타입에는 시그널을 받지 않도록 설정하고 싶은 시그널을 포함할 수 있습니다.

    #hostingforum.kr
    php
    
    $old_mask = pcntl_sigprocmask(PCNTL_SIG_BLOCK, array(SIGINT, SIGTERM));
    
    


    이 코드는 SIGINT 시그널과 SIGTERM 시그널을 받지 않도록 설정합니다.

    시그널 마스크를 설정하는 방법은 다음과 같습니다.

    - SIGKILL (9): 프로세스를 강제 종료합니다.
    - SIGINT (2): Ctrl+C 시그널입니다.
    - SIGTERM (15): 프로세스를 종료합니다.
    - SIGQUIT (3): Ctrl+\ 시그널입니다.
    - SIGHUP (1): 프로세스가 종료되었습니다.
    - SIGPIPE (13): 파이프에 데이터를 전송할 수 없습니다.
    - SIGALRM (14): 타이머가 만료되었습니다.
    - SIGUSR1 (10): 사용자 정의 시그널입니다.
    - SIGUSR2 (12): 사용자 정의 시그널입니다.

    이러한 시그널을 받지 않도록 설정하고 싶다면, pcntl_sigprocmask 함수를 사용할 수 있습니다.

    2025-08-08 02:50

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 42,411건 / 5 페이지

검색

게시물 검색