diff options
| author | Robin Stocker <robin@nibor.org> | 2017-02-27 17:01:47 +1100 |
|---|---|---|
| committer | Robin Stocker <robin@nibor.org> | 2017-02-27 17:04:18 +1100 |
| commit | 8079bf35c596eef32ec872d35e28c90e4744f61e (patch) | |
| tree | 3b8a00fbdef13ce1e929bf61aa2cca5dc1c6f494 /src/libstd | |
| parent | 60a0edc6c223a19d5288c90b0e7fbc85d6701ddc (diff) | |
| download | rust-8079bf35c596eef32ec872d35e28c90e4744f61e.tar.gz rust-8079bf35c596eef32ec872d35e28c90e4744f61e.zip | |
Example for how to provide stdin using std::process::Command
Spawning a child process and writing to its stdin is a bit tricky due to `as_mut` and having to use a limited borrow. An example for this might help newer users.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/process.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/libstd/process.rs b/src/libstd/process.rs index 4ff35738b50..f846ef3e69e 100644 --- a/src/libstd/process.rs +++ b/src/libstd/process.rs @@ -27,6 +27,31 @@ //! //! assert!(ecode.success()); //! ``` +//! +//! Calling a command with input and reading its output: +//! +//! ```no_run +//! use std::process::{Command, Stdio}; +//! use std::io::Write; +//! +//! let mut child = Command::new("/bin/cat") +//! .stdin(Stdio::piped()) +//! .stdout(Stdio::piped()) +//! .spawn() +//! .expect("failed to execute child"); +//! +//! { +//! // limited borrow of stdin +//! let stdin = child.stdin.as_mut().expect("failed to get stdin"); +//! stdin.write_all(b"test").expect("failed to write to stdin"); +//! } +//! +//! let output = child +//! .wait_with_output() +//! .expect("failed to wait on child"); +//! +//! assert_eq!(b"test", output.stdout.as_slice()); +//! ``` #![stable(feature = "process", since = "1.0.0")] |
