因此,当我在linux终端中使用std::process::command运行命令时,会出现此错误。代码的一部分是:
use std::process::Command;
fn main() {
let mut playmusic = "mpv https://www.youtube.com/watch?v=kJQP7kiw5Fk";
let status = Command::new(playmusic).status().expect("error status");
}
上面的命令代码,我在rust文档中找到。我尝试了文档中的所有内容,但没有一个能像使用wait命令一样工作。
每次我得到这个错误:
thread 'main' panicked at 'error status: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/main.rs:46:63
由于错误表明找不到命令,我在终端中运行了它,但在那里它成功运行了。但是,当在std::process::Command中使用它时,它会失败。
它失败了,因为您使用错误。您想用参数https://...
执行程序mpv
,但您当前正在告诉rust运行程序mpv https://...
,当然这是不存在的。也将参数传递给使用Command
的方法arg或args的程序。
所以你的例子可以这样固定:
use std::process::Command;
fn main() {
let url = "https://www.youtube.com/watch?v=kJQP7kiw5Fk";
let status = Command::new("mpv")
.arg(url)
.status()
.expect("Failed to run mpv");
}
如果你想知道为什么它是这样设计的,那是因为rust会调用其中一个exec
系统调用。请参阅exec(3(了解其工作原理。