On this page
pcntl_rfork
(PHP 8 >= 8.1.0)
pcntl_rfork — Manipulates process resources
Description
pcntl_rfork(int $flags, int $signal = 0): int
Manipulates process resources.
Parameters
flags-
The
flagsparameter determines which resources of the invoking process (parent) are shared by the new process (child) or initialized to their default values.flagsis the logical OR of some subset of:RFPROC: If set a new process is created; otherwise changes affect the current process.RFNOWAIT: If set, the child process will be dissociated from the parent. Upon exit the child will not leave a status for the parent to collect.RFFDG: If set, the invoker's file descriptor table is copied; otherwise the two processes share a single table.RFCFDG: If set, the new process starts with a clean file descriptor table. Is mutually exclusive withRFFDG.RFLINUXTHPN: If set, the kernel will return SIGUSR1 instead of SIGCHILD upon thread exit for the child. This is intended to do Linux clone exit parent notification.
signal-
The signal number.
Return Values
On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution. On failure, a -1 will be returned in the parent's context, no child process will be created, and a PHP error is raised.
Examples
Example #1 pcntl_rfork() example
<?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"
}
?>
The above example will output something similar to:
int(77093)
int(0)
Notes
Note:
This function is only available on BSD systems.
See Also
- 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
© 1997–2023 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/function.pcntl-rfork.php