# pcntl_rfork

(PHP 8 >= 8.1.0)

pcntl_rfork — Manipule les ressources du processus

### Description

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

Manipule les ressources du processus.

### Liste de paramètres

`flags`

  Le paramètre `flags` détermine quelles ressources du processus appelant (parent) sont partagées par le nouveau processus (enfant) ou initialisées à leurs valeurs par défaut.

  `flags` est le OU logique d'un sous-ensemble des valeurs suivantes :

  - `RFPROC`: Si défini un nouveau processus est créé ; sinon les changements affectent le processus actuel.
  - `RFNOWAIT`: Si défini, le processus enfant sera dissocié du parent. A la sortie, le processus enfant ne laissera pas de statut à collecter pour le parent.
  - `RFFDG`: Si défini, la table des descripteurs de fichiers de l'appelant est copiée ; sinon les deux processus partagent une seule table.
  - `RFCFDG`: Si défini, le nouveau processus démarre avec une table des descripteurs de fichiers propre. Est mutuellement exclusif avec `RFFDG`.
  - `RFLINUXTHPN`: Si défini, le noyau renverra SIGUSR1 au lieu de SIGCHILD à la sortie du thread pour l'enfant. Ceci est destiné à faire la notification de sortie du parent de sortie du thread Linux clone.
`signal`

  Le numéro du signal.

### Valeurs de retour

En cas de succès, le PID du processus enfant est retourné dans le contexte du parent, et un `0` est retourné dans le contexte du processus enfant. En cas d'échec, un `-1` sera retourné dans le contexte du parent, aucun processus enfant ne sera créé, et une erreur PHP sera déclenchée.

### Exemples

Exemple #1 Exemple de pcntl_rfork()

`<?php
$pid = pcntl_rfork(RFNOWAIT|RFTSIGZMB, SIGUSR1);
if ($pid > 0) {
// Ceci est le processus parent.
var_dump($pid);
} else {
// Ceci est le processus enfant.
var_dump($pid);
sleep(2); // tant que l'enfant ne dort pas, nous voyons son "pid"
}
?>`

Résultat de l'exemple ci-dessus est similaire à :

    int(77093)
    int(0)

### Notes

> Note:

> Cette fonction n'est disponible que sur les systèmes BSD.

### Voir aussi

- pcntl_fork() - Duplique le process courant
- pcntl_waitpid() - Attend la fin de l'exécution d'un processus fils
- pcntl_signal() - Installe un gestionnaire de signaux
- cli_set_process_title() - Définit le titre du processus