Julio Biason
6 months ago
4 changed files with 326 additions and 0 deletions
@ -0,0 +1,260 @@
|
||||
# This file is automatically @generated by Cargo. |
||||
# It is not intended for manual editing. |
||||
version = 3 |
||||
|
||||
[[package]] |
||||
name = "addr2line" |
||||
version = "0.21.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" |
||||
dependencies = [ |
||||
"gimli", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "adler" |
||||
version = "1.0.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" |
||||
|
||||
[[package]] |
||||
name = "backtrace" |
||||
version = "0.3.71" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" |
||||
dependencies = [ |
||||
"addr2line", |
||||
"cc", |
||||
"cfg-if", |
||||
"libc", |
||||
"miniz_oxide", |
||||
"object", |
||||
"rustc-demangle", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "bytes" |
||||
version = "1.6.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" |
||||
|
||||
[[package]] |
||||
name = "cc" |
||||
version = "1.0.98" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" |
||||
|
||||
[[package]] |
||||
name = "cfg-if" |
||||
version = "1.0.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" |
||||
|
||||
[[package]] |
||||
name = "gimli" |
||||
version = "0.28.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" |
||||
|
||||
[[package]] |
||||
name = "libc" |
||||
version = "0.2.155" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" |
||||
|
||||
[[package]] |
||||
name = "memchr" |
||||
version = "2.7.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" |
||||
|
||||
[[package]] |
||||
name = "miniz_oxide" |
||||
version = "0.7.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" |
||||
dependencies = [ |
||||
"adler", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "mio" |
||||
version = "0.8.11" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" |
||||
dependencies = [ |
||||
"libc", |
||||
"wasi", |
||||
"windows-sys", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "object" |
||||
version = "0.32.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" |
||||
dependencies = [ |
||||
"memchr", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "pin-project-lite" |
||||
version = "0.2.14" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" |
||||
|
||||
[[package]] |
||||
name = "proc-macro2" |
||||
version = "1.0.83" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" |
||||
dependencies = [ |
||||
"unicode-ident", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "quote" |
||||
version = "1.0.36" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "rustc-demangle" |
||||
version = "0.1.24" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" |
||||
|
||||
[[package]] |
||||
name = "signal-hook-registry" |
||||
version = "1.4.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" |
||||
dependencies = [ |
||||
"libc", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "syn" |
||||
version = "2.0.65" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
"quote", |
||||
"unicode-ident", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tokio" |
||||
version = "1.37.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" |
||||
dependencies = [ |
||||
"backtrace", |
||||
"bytes", |
||||
"libc", |
||||
"mio", |
||||
"pin-project-lite", |
||||
"signal-hook-registry", |
||||
"tokio-macros", |
||||
"windows-sys", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tokio-macros" |
||||
version = "2.2.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
"quote", |
||||
"syn", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tokiostdoutstderrtest" |
||||
version = "0.1.0" |
||||
dependencies = [ |
||||
"tokio", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "unicode-ident" |
||||
version = "1.0.12" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" |
||||
|
||||
[[package]] |
||||
name = "wasi" |
||||
version = "0.11.0+wasi-snapshot-preview1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" |
||||
|
||||
[[package]] |
||||
name = "windows-sys" |
||||
version = "0.48.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" |
||||
dependencies = [ |
||||
"windows-targets", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "windows-targets" |
||||
version = "0.48.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" |
||||
dependencies = [ |
||||
"windows_aarch64_gnullvm", |
||||
"windows_aarch64_msvc", |
||||
"windows_i686_gnu", |
||||
"windows_i686_msvc", |
||||
"windows_x86_64_gnu", |
||||
"windows_x86_64_gnullvm", |
||||
"windows_x86_64_msvc", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "windows_aarch64_gnullvm" |
||||
version = "0.48.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" |
||||
|
||||
[[package]] |
||||
name = "windows_aarch64_msvc" |
||||
version = "0.48.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" |
||||
|
||||
[[package]] |
||||
name = "windows_i686_gnu" |
||||
version = "0.48.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" |
||||
|
||||
[[package]] |
||||
name = "windows_i686_msvc" |
||||
version = "0.48.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" |
||||
|
||||
[[package]] |
||||
name = "windows_x86_64_gnu" |
||||
version = "0.48.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" |
||||
|
||||
[[package]] |
||||
name = "windows_x86_64_gnullvm" |
||||
version = "0.48.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" |
||||
|
||||
[[package]] |
||||
name = "windows_x86_64_msvc" |
||||
version = "0.48.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" |
@ -0,0 +1,7 @@
|
||||
[package] |
||||
name = "tokiostdoutstderrtest" |
||||
version = "0.1.0" |
||||
edition = "2021" |
||||
|
||||
[dependencies] |
||||
tokio = { version = "1.37.0", features = ["io-util", "rt", "macros", "process", "fs"] } |
@ -0,0 +1,3 @@
|
||||
# TokioStdoutStdErrTest |
||||
|
||||
Testing some ideas of running an external process, while capturing stdout and stderr. |
@ -0,0 +1,56 @@
|
||||
use tokio::io::{AsyncReadExt, AsyncWriteExt}; |
||||
|
||||
#[tokio::main(flavor = "current_thread")] |
||||
async fn main() { |
||||
let command = "valgrind"; |
||||
let args = vec!["-s", "--leak-check=full", "--track-origins=yes", "find", "/usr"]; |
||||
|
||||
let mut cmd = tokio::process::Command::new(&command) |
||||
.args(&args) |
||||
.stdout(std::process::Stdio::piped()) |
||||
.stderr(std::process::Stdio::piped()) |
||||
.spawn() |
||||
.unwrap(); |
||||
|
||||
let mut stdout = cmd.stdout.take().unwrap(); |
||||
let mut stderr = cmd.stderr.take().unwrap(); |
||||
|
||||
let mut err_output = String::new(); |
||||
|
||||
let mut stdout_file = tokio::fs::OpenOptions::new() |
||||
.write(true) |
||||
.create(true) |
||||
.truncate(true) |
||||
.open("output.log") |
||||
.await |
||||
.unwrap(); |
||||
let output_task = tokio::task::spawn(async move { |
||||
let _ = tokio::io::copy(&mut stdout, &mut stdout_file).await; |
||||
}); |
||||
|
||||
let mut stderr_file = tokio::fs::OpenOptions::new() |
||||
.write(true) |
||||
.create(true) |
||||
.truncate(true) |
||||
.open("err.log") |
||||
.await |
||||
.unwrap(); |
||||
let stderr_task = tokio::task::spawn(async move { |
||||
let mut buffer = [0u8, 32]; |
||||
while let Ok(bytes_read) = stderr.read(&mut buffer).await { |
||||
if bytes_read == 0 { |
||||
break; |
||||
} |
||||
stderr_file.write(&buffer).await.unwrap(); |
||||
err_output.push_str(&String::from_utf8_lossy(&buffer)); |
||||
} |
||||
err_output |
||||
}); |
||||
|
||||
let execution = cmd.wait().await.unwrap(); |
||||
let err_output = stderr_task.await.unwrap(); |
||||
output_task.await.unwrap(); |
||||
|
||||
println!("Execution={execution:?}"); |
||||
println!("In stderr:\n{err_output}"); |
||||
} |
Loading…
Reference in new issue