개발자 Q&A

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

2025.04.02 02:32

pcntl_wait 함수에 대한 이해가 필요합니다.

목록
  • UI컴포넌트장인 1일 전 2025.04.02 02:32
  • 2
    1
제가 pcntl_wait 함수를 사용하여 프로세스를 종료하여 자원을 회수하려고 하는데, 다음의 코드를 참고하고 있습니다.

php

$pid = pcntl_fork();

if ($pid == -1) {

    die('could not fork');

} elseif ($pid) {

    // 부모 프로세스

} else {

    // 자식 프로세스

    pcntl_wait($status);

}



pcntl_wait 함수의 두 번째 인자 `$status`에 대해 궁금한 점이 있습니다. `$status`는 어떤 값을 가질 수 있으며, 이 값을 어떻게 사용하여 자식 프로세스의 종료 상태를 확인할 수 있나요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    pcntl_wait 함수의 두 번째 인자 `$status`는 자식 프로세스의 종료 상태를 나타내는 변수입니다. `$status`는 다음과 같은 값을 가질 수 있습니다.

    - 0 : 자식 프로세스가 정상적으로 종료되었습니다.
    - -1 : 자식 프로세스가 중단되었습니다.
    - -2 : 자식 프로세스가 종료되었습니다. (부모 프로세스가 자식 프로세스를 종료했습니다.)
    - -3 : 자식 프로세스가 종료되었습니다. (부모 프로세스가 자식 프로세스를 종료했습니다. 하지만 자식 프로세스가 이미 종료된 상태입니다.)

    자식 프로세스의 종료 상태를 확인하기 위해, `$status` 변수의 값을 사용할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $pid = pcntl_fork();
    
    if ($pid == -1) {
    
        die('could not fork');
    
    } elseif ($pid) {
    
        // 부모 프로세스
    
    } else {
    
        // 자식 프로세스
    
        $status = pcntl_wait($status);
    
        if ($status == 0) {
    
            echo "자식 프로세스가 정상적으로 종료되었습니다.n";
    
        } elseif ($status == -1) {
    
            echo "자식 프로세스가 중단되었습니다.n";
    
        } elseif ($status == -2) {
    
            echo "자식 프로세스가 종료되었습니다. (부모 프로세스가 자식 프로세스를 종료했습니다.)n";
    
        } elseif ($status == -3) {
    
            echo "자식 프로세스가 종료되었습니다. (부모 프로세스가 자식 프로세스를 종료했습니다. 하지만 자식 프로세스가 이미 종료된 상태입니다.)n";
    
        }
    
    }
    
    


    이러한 방법으로, `$status` 변수의 값을 사용하여 자식 프로세스의 종료 상태를 확인할 수 있습니다.

    2025-04-02 02:33

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

검색

게시물 검색