2014-01-09 20 views

答えて

57

std::process::Commandが可能です。

子プロセスを生成し、マシン上で任意のコマンドを実行するために複数の方法があります。

  • spawn - プログラムを実行し、詳細
  • outputで値を返します - プログラムを実行し、返します出力
  • status - プログラムを実行し、終了コード

一つの簡単な例FRを返しますOMドキュメント:

use std::process::Command; 

Command::new("ls") 
     .arg("-l") 
     .arg("-a") 
     .spawn() 
     .expect("ls command failed to start"); 
3

本当に可能です!該当するモジュールはstd::runです。

let mut options = std::run::ProcessOptions::new(); 
let process = std::run::Process::new("ls", &[your, arguments], options); 

ProcessOptionsの標準ファイルディスクリプタdefault to None(新しいパイプを作成する)ので、あなただけの、その出力から読み取るprocess.output()(たとえば)を使用することができます。

コマンドを実行し、完了後にすべての出力を取得する場合は、there’s wait_with_output for that

Process::newは、昨日時点でProcessの代わりにOption<Process>を返します。

+15

:STD ::実行が削除されている、 'のstd :: IO :: process'代わりに(答えを見ます以下)。 – jgillich

+0

これは 'std :: process'となり、現在はrustc 1.19.0です。 – WiSaGaN

-1

docsから非常に明確な例:すべてのサーチャーのために

use std::process::Command; 
let output = Command::new("/bin/cat") 
        .arg("file.txt") 
        .output() 
        .expect("failed to execute process"); 

println!("status: {}", output.status); 
println!("stdout: {}", String::from_utf8_lossy(&output.stdout)); 
println!("stderr: {}", String::from_utf8_lossy(&output.stderr)); 

assert!(output.status.success()); 
関連する問題