Вот пример. Я попытаюсь использовать мою программу Rust для переноса scp:
fn spawn_scp(host: &str, path: &str) -> std::process::Output {
let a = vec![format!("{}:{}",host, path), format!("{}-gc.log",host)];
let output = Command::new("scp")
.args(&a)
.output()
.ok().expect("Failed to execute.");
return output;
}
Если я передаю неизвестный хост и какой-то путь, scp должен дать мне отпечаток ключа хоста, а затем спросить у меня пароль, который он делает:
Are you sure you want to continue connecting (yes/no)
И это позволяет мне набрать «да» и продолжить. Но из std :: process :: Command docs :
Stdin не наследуется от родительского, и любая попытка дочернего процесса прочитать из потока stdin приведет к немедленному закрытию потока.
Почему это позволяет мне печатать "да" вместо закрытия?