개발자 Q&A

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

2025.08.11 19:53

pcntl_fork 함수 이해에 필요한 도움이 필요합니다.

목록
  • Flutter전문가 11시간 전 2025.08.11 19:53 새글
  • 6
    1
제가 php로 pcntl_fork 함수를 사용하면서 fork 함수를 호출한 후, 부모 프로세스와 자식 프로세스의 pid 값을 출력하는 코드를 작성하였는데, 부모 프로세스의 pid 값이 항상 0으로 출력되는 현상을 겪고 있습니다.

다음과 같은 코드를 작성하였습니다.

php

$pid = pcntl_fork();

if ($pid == -1) {

    die("could not fork");

} elseif ($pid) {

    // 부모 프로세스

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

} else {

    // 자식 프로세스

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

}



위 코드에서 부모 프로세스의 pid 값을 출력하고자 합니다.

위 코드에서 부모 프로세스의 pid 값을 0으로 출력하는 이유는 무엇이며, 어떻게 부모 프로세스의 pid 값을 실제 pid 값으로 출력할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  11시간 전



    php에서 pcntl_fork 함수를 사용할 때, 부모 프로세스의 pid 값이 항상 0으로 출력되는 이유는 다음과 같습니다.

    - pcntl_fork 함수는 fork 함수를 호출하여 프로세스를 복사합니다.
    - 프로세스를 복사하는 과정에서 부모 프로세스의 pid 값은 0으로 초기화됩니다.
    - 부모 프로세스는 자식 프로세스의 pid 값을 반환받기 때문에, 부모 프로세스의 pid 값은 0이 아닌 자식 프로세스의 pid 값이 반환됩니다.

    따라서, 부모 프로세스의 pid 값을 실제 pid 값으로 출력하고 싶다면, fork 함수를 호출한 후, 부모 프로세스와 자식 프로세스를 구분하는 조건문을 사용해야 합니다.

    예를 들어, fork 함수를 호출한 후, 부모 프로세스는 자식 프로세스의 pid 값을 반환받기 때문에, 부모 프로세스의 pid 값은 0이 아닌 자식 프로세스의 pid 값이 반환됩니다. 따라서, 부모 프로세스의 pid 값을 실제 pid 값으로 출력하고 싶다면, fork 함수를 호출한 후, 부모 프로세스와 자식 프로세스를 구분하는 조건문을 사용해야 합니다.

    예제 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    $pid = pcntl_fork();
    
    if ($pid == -1) {
    
        die("could not fork");
    
    } elseif ($pid) {
    
        // 부모 프로세스
    
        echo "부모 프로세스 pid : $pidn";
    
    } else {
    
        // 자식 프로세스
    
        echo "자식 프로세스 pid : " . posix_getpid() . "n";
    
    }
    
    


    위 코드에서, 부모 프로세스의 pid 값을 실제 pid 값으로 출력하기 위해, posix_getpid() 함수를 사용하여 현재 프로세스의 pid 값을 반환받습니다.

    2025-08-11 19:54

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

검색

게시물 검색