在rust中使用std::process::命令时找不到命令



因此,当我在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(了解其工作原理。

相关内容

  • 没有找到相关文章

最新更新