라이브러리

[PHP] pcntl_waitpid - 포크된 자식의 상태를 기다리거나 반환합니다.




pcntl_waitpid 함수 소개


`pcntl_waitpid` 함수는 프로세스 ID를 입력받아 해당 프로세스가 종료될 때까지 기다리는 함수입니다. 이 함수는 `pcntl` 확장 모듈에 속하며, 프로세스 관리에 사용됩니다.

pcntl_waitpid 함수 사용법


`pcntl_waitpid` 함수의 사용법은 다음과 같습니다.

#hostingforum.kr
php

pcntl_waitpid($pid, $status, $options)



* `$pid`: 프로세스 ID를 입력받습니다.
* `$status`: 프로세스의 상태를 저장할 변수입니다.
* `$options`: 옵션을 입력받습니다. 기본값은 0입니다.

pcntl_waitpid 함수 옵션


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

* `PCNTL_WNOHANG`: 프로세스가 종료되지 않았을 때 즉시 반환합니다.
* `PCNTL_WUNTRACED`: 프로세스가 중단되었을 때도 반환합니다.

예제


다음 예제는 `pcntl_waitpid` 함수를 사용하여 프로세스를 기다리는 방법을 보여줍니다.

#hostingforum.kr
php

<?php

// 프로세스 생성

$pid = pcntl_fork();



if ($pid == -1) {

    die("fork failed");

} elseif ($pid) {

    // 부모 프로세스

    echo "부모 프로세스 ID: $pid
";

    pcntl_waitpid($pid, $status);

    echo "자식 프로세스가 종료되었습니다.
";

} else {

    // 자식 프로세스

    echo "자식 프로세스 ID: $pid
";

    sleep(5); // 5초 동안 대기

    exit(0); // 프로세스 종료

}

?>



이 예제에서는 `pcntl_fork` 함수를 사용하여 프로세스를 생성하고, `pcntl_waitpid` 함수를 사용하여 자식 프로세스가 종료될 때까지 기다립니다.

예제 2: PCNTL_WNOHANG 옵션 사용


다음 예제는 `PCNTL_WNOHANG` 옵션을 사용하여 프로세스를 기다리는 방법을 보여줍니다.

#hostingforum.kr
php

<?php

// 프로세스 생성

$pid = pcntl_fork();



if ($pid == -1) {

    die("fork failed");

} elseif ($pid) {

    // 부모 프로세스

    echo "부모 프로세스 ID: $pid
";

    $status = pcntl_waitpid($pid, $status, PCNTL_WNOHANG);

    if ($status == 0) {

        echo "자식 프로세스가 종료되었습니다.
";

    } else {

        echo "자식 프로세스가 종료되지 않았습니다.
";

    }

} else {

    // 자식 프로세스

    echo "자식 프로세스 ID: $pid
";

    sleep(5); // 5초 동안 대기

    exit(0); // 프로세스 종료

}

?>



이 예제에서는 `PCNTL_WNOHANG` 옵션을 사용하여 프로세스를 기다리고, 자식 프로세스가 종료되지 않았을 때 즉시 반환합니다.

예제 3: PCNTL_WUNTRACED 옵션 사용


다음 예제는 `PCNTL_WUNTRACED` 옵션을 사용하여 프로세스를 기다리는 방법을 보여줍니다.

#hostingforum.kr
php

<?php

// 프로세스 생성

$pid = pcntl_fork();



if ($pid == -1) {

    die("fork failed");

} elseif ($pid) {

    // 부모 프로세스

    echo "부모 프로세스 ID: $pid
";

    $status = pcntl_waitpid($pid, $status, PCNTL_WUNTRACED);

    if ($status == 0) {

        echo "자식 프로세스가 종료되었습니다.
";

    } elseif ($status == 16) {

        echo "자식 프로세스가 중단되었습니다.
";

    } else {

        echo "자식 프로세스가 종료되지 않았습니다.
";

    }

} else {

    // 자식 프로세스

    echo "자식 프로세스 ID: $pid
";

    sleep(5); // 5초 동안 대기

    exit(16); // 프로세스 중단

}

?>



이 예제에서는 `PCNTL_WUNTRACED` 옵션을 사용하여 프로세스를 기다리고, 자식 프로세스가 중단되었을 때도 반환합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색