2

So, i am getting this error when i run a command in linux terminal using std::process::Command. The part of the code is:

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");    
}

The above code for the command, i found at rust docs. I tried everything in the docs, but none of them worked like using wait command.

Everytime i get this error:

thread 'main' panicked at 'error status: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/main.rs:46:63

Since, the error says that the command not found, i ran it in my terminal but there it ran successfully. But, when using this in std::process::Command, it fails.

1

1 Answer 1

4

It fails, because you are using it wrong. You want to exec program mpv with argument https://..., but you are currently telling rust to run program mpv https://..., which of course does not exist. Too pass arguments to programs use Command's method arg or args.

So your example can be fixed as such:

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");    
}

If you want to know why it is designed this way, it's because rust will call one of the exec syscalls. See exec(3) to understand how it works.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.