Skip to content

Commit

Permalink
Rollup merge of rust-lang#44625 - frewsxcv:frewsxcv-raii-stdin, r=Qui…
Browse files Browse the repository at this point in the history
…etMisdreavus

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

Fixes rust-lang#41452.
  • Loading branch information
GuillaumeGomez authored Sep 23, 2017
2 parents a83c3e7 + 859ebef commit 3426bf0
Showing 1 changed file with 24 additions and 8 deletions.
32 changes: 24 additions & 8 deletions src/libstd/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,15 +106,18 @@ use sys_common::{AsInner, AsInnerMut, FromInner, IntoInner};
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>,
}
Expand Down Expand Up @@ -149,12 +152,17 @@ impl fmt::Debug for Child {
}
}

/// 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
Expand Down Expand Up @@ -192,12 +200,16 @@ impl fmt::Debug for ChildStdin {
}
}

/// 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
Expand Down Expand Up @@ -239,8 +251,12 @@ impl fmt::Debug for ChildStdout {
///
/// 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
Expand Down Expand Up @@ -534,7 +550,7 @@ impl Command {
self
}

/// Configuration for the child process's stdin handle (file descriptor 0).
/// Configuration for the child process's standard input (stdin) handle.
///
/// # Examples
///
Expand All @@ -554,7 +570,7 @@ impl Command {
self
}

/// Configuration for the child process's stdout handle (file descriptor 1).
/// Configuration for the child process's standard output (stdout) handle.
///
/// # Examples
///
Expand All @@ -574,7 +590,7 @@ impl Command {
self
}

/// Configuration for the child process's stderr handle (file descriptor 2).
/// Configuration for the child process's standard error (stderr) handle.
///
/// # Examples
///
Expand Down

0 comments on commit 3426bf0

Please sign in to comment.