【发布时间】:2020-09-09 08:28:12
【问题描述】:
根据How do I invoke a system command in Rust and capture its output? 的回答,我可以执行一个命令,该命令本身会生成一个shell 来执行命令。
use std::process::Command;
Command::new("sh")
.spawn()
.expect("sh command failed to start");
是否可以在这个新获得的 shell 中执行来自 Rust 的命令?
【问题讨论】:
-
Shell 只是将命令作为标准输入并在标准输出上生成输出。所以理论上你需要做的就是捕获标准输入/标准输出并与它们交互(写入标准输入并从标准输出读取)。但是,由于阻塞和缓冲以及朋友,这通常是一件令人头疼的事情,这就是为什么存在诸如期望/pexpect 之类的工具来处理所有繁琐的位的原因。
标签: rust