Process Control pcntl_rfork

(PHP 8 >= 8.1.0)

pcntl_rfork — 프로세스 리소스 조작


설명

pcntl_rfork(int $flags, int $signal = 0): int

프로세스 리소스를 조작합니다.


매개변수

flags
flags 매개변수는 호출 프로세스(상위)의 어떤 자원이 새 프로세스(하위)에 의해 공유되거나 기본값으로 초기화되는지를 결정합니다.

flags는 다음의 일부 하위 집합의 논리적 OR입니다.

  • RFPROC: 설정하면 새 프로세스가 생성됩니다. 그렇지 않으면 변경 사항이 현재 프로세스에 영향을 줍니다.
  • RFNOWAIT: 설정하면 자식 프로세스가 부모에서 분리됩니다. 퇴장 시 자녀는 부모가 징수할 수 있는 상태를 남기지 않습니다.
  • RFFDG: 설정되면 호출자의 파일 설명자 테이블이 복사됩니다. 그렇지 않으면 두 프로세스가 단일 테이블을 공유합니다.
  • RFCFDG: 설정되면 새 프로세스는 깨끗한 파일 설명자 테이블로 시작합니다. RFFDG와 상호 배타적입니다.
  • RFLINUXTHPN: 설정하면 커널은 자식에 대한 스레드 종료 시 SIGCHILD 대신 SIGUSR1을 반환합니다. 이것은 Linux 복제 종료 상위 알림을 수행하기 위한 것입니다.
signal
신호 번호입니다.

반환 값

성공하면 자식 프로세스의 PID가 부모의 실행 스레드에서 반환되고 자식의 실행 스레드에서 0이 반환됩니다. 실패하면 부모 컨텍스트에서 -1이 반환되고 자식 프로세스가 생성되지 않으며 PHP 오류가 발생합니다.


Examples

예제 #1 pcntl_rfork() 예제

                  
<?php

$pid = pcntl_rfork(RFNOWAIT|RFTSIGZMB, SIGUSR1);
if ($pid > 0) {
  // This is the parent process.
  var_dump($pid);
} else {
  // This is the child process.
  var_dump($pid);
  sleep(2); // as the child does not wait, so we see its "pid"
}
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

int(77093)
int(0)
                

기타