如何在Rust中执行命令字符串

时间:2020-09-01 12:51:14

标签: rust

我想生成默认的编辑器来编辑一个临时文件,并在编辑器关闭时处理结果。

我正在通过执行git config --get core.editor从git中获取默认编辑器。就我而言,结果是"C:\\Program Files\\Microsoft VS Code\\Code.exe" --wait

我以为我可以做到这一点:

let editorCmd = getCoreEditorFromGit();

let result = Command::new(editorCmd)
       .arg(&"random-file.txt")
       .status()
       .expect("Editor should launch");

但是Windows报告错误:

thread 'main' panicked at 'Editor should launch: Os { code: 5, kind: PermissionDenied, message: "Zugriff verweigert" }', src\main.rs:134:26

我想这是因为Command::new(prog)期望prog是程序的路径,而不是整个命令。

我如何使其工作?

很显然,当编辑器路径包含空格时,将字符串拆分为空格是行不通的。我真的想避免解析命令字符串,以便可以正确使用Command构建器。

0 个答案:

没有答案