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)
기타
- pcntl_fork() - Forks the currently running process
- pcntl_waitpid() - Waits on or returns the status of a forked child
- pcntl_signal() - Installs a signal handler
- cli_set_process_title() - Sets the process title