Skip to content

Commit f49d267

Browse files
authored
Rollup merge of #99088 - niklasf:stabilize-process_set_process_group, r=joshtriplett
Document and stabilize process_set_process_group Tracking issue: #93857 FCP finished here: #93857 (comment)
2 parents 0748638 + 629b0b4 commit f49d267

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

library/std/src/os/unix/process.rs

+30-3
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,36 @@ pub trait CommandExt: Sealed {
148148
where
149149
S: AsRef<OsStr>;
150150

151-
/// Sets the process group ID of the child process. Translates to a `setpgid` call in the child
152-
/// process.
153-
#[unstable(feature = "process_set_process_group", issue = "93857")]
151+
/// Sets the process group ID (PGID) of the child process. Equivalent to a
152+
/// `setpgid` call in the child process, but may be more efficient.
153+
///
154+
/// Process groups determine which processes receive signals.
155+
///
156+
/// # Examples
157+
///
158+
/// Pressing Ctrl-C in a terminal will send SIGINT to all processes in
159+
/// the current foreground process group. By spawning the `sleep`
160+
/// subprocess in a new process group, it will not receive SIGINT from the
161+
/// terminal.
162+
///
163+
/// The parent process could install a signal handler and manage the
164+
/// subprocess on its own terms.
165+
///
166+
/// A process group ID of 0 will use the process ID as the PGID.
167+
///
168+
/// ```no_run
169+
/// use std::process::Command;
170+
/// use std::os::unix::process::CommandExt;
171+
///
172+
/// Command::new("sleep")
173+
/// .arg("10")
174+
/// .process_group(0)
175+
/// .spawn()?
176+
/// .wait()?;
177+
/// #
178+
/// # Ok::<_, Box<dyn std::error::Error>>(())
179+
/// ```
180+
#[stable(feature = "process_set_process_group", since = "1.64.0")]
154181
fn process_group(&mut self, pgroup: i32) -> &mut process::Command;
155182
}
156183

0 commit comments

Comments
 (0)