라이브러리

[PHP] pcntl_signal - 신호 핸들러를 설치합니다




PCNTL Signal


PHP의 PCNTL Signal은 프로세스에 대한 신호를 처리하는 기능입니다. 신호는 프로세스에 보내질 수 있는 이벤트로, 예를 들어 Ctrl+C, Ctrl+Z, SIGINT, SIGTERM 등이 있습니다. PCNTL Signal은 이러한 신호를 처리하는 데 사용됩니다.

PCNTL Signal 함수


PCNTL Signal 함수는 다음과 같습니다.

- `pcntl_signal($signo, $handler)`: 신호 처리 핸들러를 등록합니다.
- `pcntl_signal_dispatch()`: 신호 처리 핸들러를 호출합니다.
- `pcntl_signal_status($signo)`: 신호 처리 핸들러의 상태를 반환합니다.

예제


다음 예제는 PCNTL Signal을 사용하여 Ctrl+C 신호를 처리하는 방법을 보여줍니다.

#hostingforum.kr
php

<?php



function signal_handler($signo) {

    switch ($signo) {

        case SIGINT:

            echo "Ctrl+C 신호를 받았습니다.
";

            break;

        case SIGTERM:

            echo "SIGTERM 신호를 받았습니다.
";

            break;

        default:

            echo "unknown 신호
";

            break;

    }

    exit(0);

}



pcntl_signal(SIGINT, 'signal_handler');

pcntl_signal(SIGTERM, 'signal_handler');



while (true) {

    // 프로세스가 계속 실행됩니다.

    sleep(1);

}



?>



이 예제에서는 `signal_handler` 함수를 등록하여 Ctrl+C와 SIGTERM 신호를 처리합니다. `while` 루프를 사용하여 프로세스가 계속 실행됩니다.

예제 2


다음 예제는 PCNTL Signal을 사용하여 프로세스 간 통신을 처리하는 방법을 보여줍니다.

#hostingforum.kr
php

<?php



function signal_handler($signo) {

    switch ($signo) {

        case SIGUSR1:

            echo "SIGUSR1 신호를 받았습니다.
";

            $pid = pcntl_fork();

            if ($pid == -1) {

                die("fork failed");

            } elseif ($pid) {

                // 부모 프로세스

                pcntl_wait($status);

            } else {

                // 자식 프로세스

                echo "자식 프로세스입니다.
";

                exit(0);

            }

            break;

        default:

            echo "unknown 신호
";

            break;

    }

}



pcntl_signal(SIGUSR1, 'signal_handler');



while (true) {

    // 프로세스가 계속 실행됩니다.

    sleep(1);

}



?>



이 예제에서는 `signal_handler` 함수를 등록하여 SIGUSR1 신호를 처리합니다. SIGUSR1 신호를 받으면 프로세스가 자식 프로세스를 생성하고, 부모 프로세스는 자식 프로세스를 기다립니다.

참고


- PCNTL Signal은 프로세스에 대한 신호를 처리하는 기능입니다.
- PCNTL Signal 함수는 `pcntl_signal`, `pcntl_signal_dispatch`, `pcntl_signal_status`가 있습니다.
- 예제는 PCNTL Signal을 사용하여 Ctrl+C 신호와 프로세스 간 통신을 처리하는 방법을 보여줍니다.
- PCNTL Signal은 프로세스에 대한 신호를 처리하는 데 사용됩니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 339 페이지

검색

게시물 검색