提交 b1a1861d 编写于 作者: G Guillaume Gomez 提交者: GitHub

Rollup merge of #44625 - frewsxcv:frewsxcv-raii-stdin, r=QuietMisdreavus

Indicate how ChildStd{in,out,err} FDs are closed.

Fixes https://github.com/rust-lang/rust/issues/41452.
......@@ -106,15 +106,18 @@
pub struct Child {
handle: imp::Process,
/// The handle for writing to the child's stdin, if it has been captured
/// The handle for writing to the child's standard input (stdin), if it has
/// been captured.
#[stable(feature = "process", since = "1.0.0")]
pub stdin: Option<ChildStdin>,
/// The handle for reading from the child's stdout, if it has been captured
/// The handle for reading from the child's standard output (stdout), if it
/// has been captured.
#[stable(feature = "process", since = "1.0.0")]
pub stdout: Option<ChildStdout>,
/// The handle for reading from the child's stderr, if it has been captured
/// The handle for reading from the child's standard error (stderr), if it
/// has been captured.
#[stable(feature = "process", since = "1.0.0")]
pub stderr: Option<ChildStderr>,
}
......@@ -149,12 +152,17 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
}
}
/// A handle to a child process's stdin.
/// A handle to a child process's standard input (stdin).
///
/// This struct is used in the [`stdin`] field on [`Child`].
///
/// When an instance of `ChildStdin` is [dropped], the `ChildStdin`'s underlying
/// file handle will be closed. If the child process was blocked on input prior
/// to being dropped, it will become unblocked after dropping.
///
/// [`Child`]: struct.Child.html
/// [`stdin`]: struct.Child.html#structfield.stdin
/// [dropped]: ../ops/trait.Drop.html
#[stable(feature = "process", since = "1.0.0")]
pub struct ChildStdin {
inner: AnonPipe
......@@ -192,12 +200,16 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
}
}
/// A handle to a child process's stdout.
/// A handle to a child process's standard output (stdout).
///
/// This struct is used in the [`stdout`] field on [`Child`].
///
/// When an instance of `ChildStdout` is [dropped], the `ChildStdout`'s
/// underlying file handle will be closed.
///
/// [`Child`]: struct.Child.html
/// [`stdout`]: struct.Child.html#structfield.stdout
/// [dropped]: ../ops/trait.Drop.html
#[stable(feature = "process", since = "1.0.0")]
pub struct ChildStdout {
inner: AnonPipe
......@@ -239,8 +251,12 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
///
/// This struct is used in the [`stderr`] field on [`Child`].
///
/// When an instance of `ChildStderr` is [dropped], the `ChildStderr`'s
/// underlying file handle will be closed.
///
/// [`Child`]: struct.Child.html
/// [`stderr`]: struct.Child.html#structfield.stderr
/// [dropped]: ../ops/trait.Drop.html
#[stable(feature = "process", since = "1.0.0")]
pub struct ChildStderr {
inner: AnonPipe
......@@ -534,7 +550,7 @@ pub fn current_dir<P: AsRef<Path>>(&mut self, dir: P) -> &mut Command {
self
}
/// Configuration for the child process's stdin handle (file descriptor 0).
/// Configuration for the child process's standard input (stdin) handle.
///
/// # Examples
///
......@@ -554,7 +570,7 @@ pub fn stdin<T: Into<Stdio>>(&mut self, cfg: T) -> &mut Command {
self
}
/// Configuration for the child process's stdout handle (file descriptor 1).
/// Configuration for the child process's standard output (stdout) handle.
///
/// # Examples
///
......@@ -574,7 +590,7 @@ pub fn stdout<T: Into<Stdio>>(&mut self, cfg: T) -> &mut Command {
self
}
/// Configuration for the child process's stderr handle (file descriptor 2).
/// Configuration for the child process's standard error (stderr) handle.
///
/// # Examples
///
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册