[DOC-CVS] [doc-en] master: Add documentation for 6 new pcntl functions (PHP 8.4) (#5350)

[email protected] (Louis-Arnaud via GitHub) Sun, 7 Jun 2026 17:44:17 +0000
Newsgroups php.doc.cvs
Message-ID <[email protected]>
Author: Louis-Arnaud (lacatoire)
Committer: GitHub (web-flow)
Pusher: jordikroon
Date: 2026-06-07T19:44:14+02:00

Commit: https://github.com/php/doc-en/commit/acb474ea92ab6226eaf419a85de05f68c6715a9f
Raw diff: https://github.com/php/doc-en/commit/acb474ea92ab6226eaf419a85de05f68c6715a9f.diff

Add documentation for 6 new pcntl functions (PHP 8.4) (#5350)

* Add documentation for 6 new pcntl functions

Add documentation pages for pcntl functions available since PHP 8.4:
- pcntl_wifcontinued: Check if child continued from job control stop
- pcntl_getcpu: Get current CPU number (Linux)
- pcntl_forkx: Create child process using forkx(2) (illumos/Solaris)
- pcntl_setns: Reassociate process with namespace (Linux)
- pcntl_getqos_class: Get process QoS class (macOS)
- pcntl_setqos_class: Set process QoS class (macOS)

Changed paths:
  A  reference/pcntl/functions/pcntl-forkx.xml
  A  reference/pcntl/functions/pcntl-getcpu.xml
  A  reference/pcntl/functions/pcntl-getqos-class.xml
  A  reference/pcntl/functions/pcntl-setns.xml
  A  reference/pcntl/functions/pcntl-setqos-class.xml
  A  reference/pcntl/functions/pcntl-wifcontinued.xml


Diff:

diff --git a/reference/pcntl/functions/pcntl-forkx.xml b/reference/pcntl/functions/pcntl-forkx.xml
new file mode 100644
index 000000000000..b189e980356c
--- /dev/null
+++ b/reference/pcntl/functions/pcntl-forkx.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.pcntl-forkx" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>pcntl_forkx</refname>
+  <refpurpose>Create a child process using forkx(2)</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>int</type><methodname>pcntl_forkx</methodname>
+   <methodparam><type>int</type><parameter>flags</parameter></methodparam>
+  </methodsynopsis>
+  <simpara>
+   The <function>pcntl_forkx</function> function creates a child process
+   using the <literal>forkx(2)</literal> system call, which is available
+   on illumos and Solaris systems.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <variablelist>
+   <varlistentry>
+    <term><parameter>flags</parameter></term>
+    <listitem>
+     <simpara>
+      The <parameter>flags</parameter> parameter controls the behavior
+      of the fork. Pass <literal>0</literal> for default behavior or
+      <constant>FORK_NOSIGCHLD</constant> to prevent the
+      <constant>SIGCHLD</constant> signal from being sent to the parent
+      when the child terminates.
+     </simpara>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <simpara>
+   On success, the PID of the child process is returned in the
+   parent's thread of execution, and a <literal>0</literal> is returned
+   in the child's thread of execution. On failure, a <literal>-1</literal>
+   will be returned in the parent's context, no child process will be
+   created, and a PHP error is raised.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <simplelist>
+   <member><function>pcntl_fork</function></member>
+   <member><function>pcntl_rfork</function></member>
+   <member><function>pcntl_waitpid</function></member>
+  </simplelist>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/pcntl/functions/pcntl-getcpu.xml b/reference/pcntl/functions/pcntl-getcpu.xml
new file mode 100644
index 000000000000..c35c45fc18bd
--- /dev/null
+++ b/reference/pcntl/functions/pcntl-getcpu.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.pcntl-getcpu" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>pcntl_getcpu</refname>
+  <refpurpose>Get the CPU number on which the calling process last executed</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>int</type><methodname>pcntl_getcpu</methodname>
+   <void/>
+  </methodsynopsis>
+  <simpara>
+   <function>pcntl_getcpu</function> returns the number of the CPU on which
+   the calling process was last executed. This function uses the
+   <literal>sched_getcpu(3)</literal> system call available on Linux.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  &no.function.parameters;
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <simpara>
+   Returns the CPU number as an &integer;.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <simplelist>
+   <member><function>pcntl_getcpuaffinity</function></member>
+   <member><function>pcntl_setcpuaffinity</function></member>
+  </simplelist>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/pcntl/functions/pcntl-getqos-class.xml b/reference/pcntl/functions/pcntl-getqos-class.xml
new file mode 100644
index 000000000000..430a54f5d030
--- /dev/null
+++ b/reference/pcntl/functions/pcntl-getqos-class.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.pcntl-getqos-class" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>pcntl_getqos_class</refname>
+  <refpurpose>Get the current Quality of Service class of the process</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>Pcntl\QosClass</type><methodname>pcntl_getqos_class</methodname>
+   <void/>
+  </methodsynopsis>
+  <simpara>
+   Returns the current Quality of Service (<acronym>QoS</acronym>) class of the calling process.
+   This function is only available on macOS, which uses <acronym>QoS</acronym> classes to
+   manage energy efficiency and performance.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  &no.function.parameters;
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <simpara>
+   Returns a <classname>Pcntl\QosClass</classname> enum value representing
+   the current <acronym>QoS</acronym> class.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <simplelist>
+   <member><function>pcntl_setqos_class</function></member>
+  </simplelist>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/pcntl/functions/pcntl-setns.xml b/reference/pcntl/functions/pcntl-setns.xml
new file mode 100644
index 000000000000..851dab086991
--- /dev/null
+++ b/reference/pcntl/functions/pcntl-setns.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.pcntl-setns" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>pcntl_setns</refname>
+  <refpurpose>Reassociate the calling process with a namespace of another process</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>pcntl_setns</methodname>
+   <methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>process_id</parameter><initializer>&null;</initializer></methodparam>
+   <methodparam choice="opt"><type>int</type><parameter>nstype</parameter><initializer><constant>CLONE_NEWNET</constant></initializer></methodparam>
+  </methodsynopsis>
+  <simpara>
+   Reassociates the calling process with a Linux namespace of the process
+   specified by <parameter>process_id</parameter>, using a pidfd obtained
+   via <literal>pidfd_open(2)</literal> and <literal>setns(2)</literal>.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <variablelist>
+   <varlistentry>
+    <term><parameter>process_id</parameter></term>
+    <listitem>
+     <simpara>
+      The process ID of the target process whose namespace to join.
+      If &null;, the calling process's own PID is used.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>nstype</parameter></term>
+    <listitem>
+     <simpara>
+      The namespace type to reassociate with. Defaults to
+      <constant>CLONE_NEWNET</constant> (network namespace).
+      Possible values include <constant>CLONE_NEWNET</constant>,
+      <constant>CLONE_NEWIPC</constant>,
+      <constant>CLONE_NEWUTS</constant>, and others.
+     </simpara>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <simpara>
+   &return.success;
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <simplelist>
+   <member><function>pcntl_unshare</function></member>
+  </simplelist>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/pcntl/functions/pcntl-setqos-class.xml b/reference/pcntl/functions/pcntl-setqos-class.xml
new file mode 100644
index 000000000000..698d0d231f19
--- /dev/null
+++ b/reference/pcntl/functions/pcntl-setqos-class.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.pcntl-setqos-class" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>pcntl_setqos_class</refname>
+  <refpurpose>Set the Quality of Service class of the process</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>void</type><methodname>pcntl_setqos_class</methodname>
+   <methodparam choice="opt"><type>Pcntl\QosClass</type><parameter>qos_class</parameter><initializer>Pcntl\QosClass::Default</initializer></methodparam>
+  </methodsynopsis>
+  <simpara>
+   Sets the Quality of Service (<acronym>QoS</acronym>) class of the calling process.
+   This function is only available on macOS, which uses <acronym>QoS</acronym> classes to
+   manage energy efficiency and performance.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <variablelist>
+   <varlistentry>
+    <term><parameter>qos_class</parameter></term>
+    <listitem>
+     <simpara>
+      The <acronym>QoS</acronym> class to set. Must be one of the
+      <classname>Pcntl\QosClass</classname> enum values:
+     </simpara>
+     <simplelist>
+      <member><literal>Pcntl\QosClass::UserInteractive</literal></member>
+      <member><literal>Pcntl\QosClass::UserInitiated</literal></member>
+      <member><literal>Pcntl\QosClass::Default</literal></member>
+      <member><literal>Pcntl\QosClass::Utility</literal></member>
+      <member><literal>Pcntl\QosClass::Background</literal></member>
+     </simplelist>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <simpara>
+   &return.void;
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <simplelist>
+   <member><function>pcntl_getqos_class</function></member>
+  </simplelist>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/pcntl/functions/pcntl-wifcontinued.xml b/reference/pcntl/functions/pcntl-wifcontinued.xml
new file mode 100644
index 000000000000..4190b294f177
--- /dev/null
+++ b/reference/pcntl/functions/pcntl-wifcontinued.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.pcntl-wifcontinued" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>pcntl_wifcontinued</refname>
+  <refpurpose>Checks whether the child process has continued from a job control stop</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>pcntl_wifcontinued</methodname>
+   <methodparam><type>int</type><parameter>status</parameter></methodparam>
+  </methodsynopsis>
+  <simpara>
+   Checks whether the child process which caused the return of
+   <function>pcntl_waitpid</function> has continued from a job control stop.
+   This function is only useful if the call to
+   <function>pcntl_waitpid</function> was done using the
+   <constant>WCONTINUED</constant> option.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <variablelist>
+   <varlistentry>
+    <term><parameter>status</parameter></term>
+    <listitem>
+     &pcntl.parameter.status;
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <simpara>
+   Returns &true; if the child process which caused the return of
+   <function>pcntl_waitpid</function> has continued from a job control stop,
+   &false; otherwise.
+  </simpara>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <simplelist>
+   <member><function>pcntl_waitpid</function></member>
+   <member><function>pcntl_wifstopped</function></member>
+   <member><function>pcntl_wifexited</function></member>
+   <member><function>pcntl_wifsignaled</function></member>
+  </simplelist>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->