about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiklas Fiekas <niklas.fiekas@backscattering.de>2022-06-16 00:12:03 +0200
committerNiklas Fiekas <niklas.fiekas@backscattering.de>2022-07-09 12:40:33 +0200
commitb028bbf9d0618f0f4af279d33b7a057a8072eb18 (patch)
treef1b7280275b8ef7b72599e2afd7c390d6d1863a9
parent86b8dd5389cd9d545418a60902222a4ba859365f (diff)
downloadrust-b028bbf9d0618f0f4af279d33b7a057a8072eb18.tar.gz
rust-b028bbf9d0618f0f4af279d33b7a057a8072eb18.zip
Document and stabilize process_set_process_group
Tracking issue: https://github.com/rust-lang/rust/issues/93857

FCP finished here:
https://github.com/rust-lang/rust/issues/93857#issuecomment-1179551697
-rw-r--r--library/std/src/os/unix/process.rs31
1 files changed, 28 insertions, 3 deletions
diff --git a/library/std/src/os/unix/process.rs b/library/std/src/os/unix/process.rs
index 5065530e8d4..bd6d431f8e4 100644
--- a/library/std/src/os/unix/process.rs
+++ b/library/std/src/os/unix/process.rs
@@ -148,9 +148,34 @@ pub trait CommandExt: Sealed {
     where
         S: AsRef<OsStr>;
 
-    /// Sets the process group ID of the child process. Translates to a `setpgid` call in the child
-    /// process.
-    #[unstable(feature = "process_set_process_group", issue = "93857")]
+    /// Sets the process group ID of the child process. Equivalent to a
+    /// `setpgid` call in the child process, but may be more efficient.
+    ///
+    /// Process groups determine which processes receive signals.
+    ///
+    /// # Examples
+    ///
+    /// Pressing Ctrl-C in a terminal will send SIGINT to all processes in
+    /// the current foreground process group. By spawning the `sleep`
+    /// subprocess in a new process group, it will not receive SIGINT from the
+    /// terminal.
+    ///
+    /// The parent process could install a signal handler and manage the
+    /// subprocess on its own terms.
+    ///
+    /// ```no_run
+    /// use std::process::Command;
+    /// use std::os::unix::process::CommandExt;
+    ///
+    /// Command::new("sleep")
+    ///     .arg("10")
+    ///     .process_group(0)
+    ///     .spawn()?
+    ///     .wait()?;
+    /// #
+    /// # Ok::<_, Box<dyn std::error::Error>>(())
+    /// ```
+    #[stable(feature = "process_set_process_group", since = "1.64.0")]
     fn process_group(&mut self, pgroup: i32) -> &mut process::Command;
 }