为什么rust的std :: process :: Command.output()不关闭交互式程序的输入流?

时间:2019-03-21 23:44:59

标签: rust

这是一个例子。我将尝试使用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流中读取数据将导致该流立即关闭。

为什么它让我输入“是”而不是关闭?

0 个答案:

没有答案