use std::io::ErrorKind; use std::process::Stdio; use std::time::Duration; use tokio::io::AsyncReadExt; use tokio::process::Command; use tokio::time::sleep; use tokio_test::assert_ok;
#[tokio::test] asyncfn kill_on_drop() { letmut cmd = Command::new("bash");
cmd.args([ "-c", " # Fork another child that won't get killed
sh -c 'sleep 1; echo child ran' &
disown -a
# Await our death
sleep 5
echo hello from beyond the grave ",
]);
let e = cmd.kill_on_drop(true).stdout(Stdio::piped()).spawn(); if e.is_err() && e.as_ref().unwrap_err().kind() == ErrorKind::NotFound {
println!("bash not available; skipping test"); return;
} letmut child = e.unwrap();
sleep(Duration::from_secs(2)).await;
letmut out = child.stdout.take().unwrap();
drop(child);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.