Windows环境下Rust调用dir命令的测试失败原因咨询
问题原因及解决办法
失败原因
Windows系统里的dir是cmd.exe的内置命令,并非独立的可执行程序。而Rust的std::process::Command::new()只能直接调用独立的可执行文件(比如notepad.exe、ping.exe这类),无法直接识别shell内置命令,因此调用Command::new("dir")会找不到对应程序,导致res.is_ok()返回false,测试失败。
修复后的测试代码
修改测试代码,通过cmd.exe间接执行dir命令:
use std::process::Command; #[test] fn runs() { let mut cmd = Command::new("cmd.exe"); let res = cmd.arg("/c").arg("dir").output(); assert!(res.is_ok()); }
参数/c用于告诉cmd.exe,执行完后续指定的命令后立即退出,这样就能正确触发dir命令并获取执行结果。
内容的提问来源于stack exchange,提问作者Steve Greene
相关产品推荐
相关产品推荐

