use std::process::Command; // cmd_str可以是从输入流读取或从文件里读取 let cmd_str: String; if cfg!(target_os = "windows") { // 这里不用\\而是/的话会被windows认为/tmp的/t是一个option而报错 cmd_str = "dir d:\\tmp".to_string(); } else { cmd_str = "dir /usr/tmp".to_string(); } let output = if cfg!(target_os = "windows") { Command::new("cmd").arg("/c").arg(cmd_str).output().expect("cmd exec error!"); } else { Command::new("sh").arg("-c").arg(cmd_str).output().expect("sh exec error!"); } let output_str = String::from_utf8_lossy(&output.stdout); println!("{}", output_str);
上面的是同步执行命令,还可以异步执行的方式,貌似叫child的一个方法,这个需要用的时候再说;而且也可以利用task将同步的放到异步的地方进行执行;