Rustのls
またはfuser
のようなシステムコマンドを呼び出す方法はありますか?出力をキャプチャするのはどうですか?Rustでシステムコマンドを呼び出して出力をキャプチャするにはどうすればよいですか?
30
A
答えて
57
std::process::Command
が可能です。
子プロセスを生成し、マシン上で任意のコマンドを実行するために複数の方法があります。
一つの簡単な例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>
を返します。
-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());
関連する問題
- 1. Rust FFIを使用してC++コンストラクタを呼び出すにはどうすればよいですか?
- 2. メソッドを呼び出してその結果を出力するにはどうすればよいですか?
- 3. 呼び出し元スレッドでインターフェイスコールバックを呼び出すにはどうすればよいですか?
- 4. プログラムで呼び出されたJavadocドックレットの出力を呼び出し元から取得するにはどうすればよいですか?
- 5. なぜRustは値で呼び出しを行い、参照によって呼び出しますか?
- 6. curl -w出力(xargsによって呼び出される)を別々の行に出力するにはどうすればよいですか?
- 7. アクティビティでカスタムクラスを呼び出すにはどうすればよいですか?
- 8. レールコントローラでチャンネルメソッドを呼び出すにはどうすればよいですか?
- 9. サービスクラスでsupportFragmentMangerを呼び出すにはどうすればよいですか?
- 10. インスタンスでクラスメソッドを呼び出すにはどうすればよいですか?
- 11. MVCでコントローラアクションを呼び出すにはどうすればよいですか?
- 12. ベースクラスオブジェクトでサブクラスメソッドを呼び出すにはどうすればよいですか?
- 13. application_controllerでメソッドを呼び出すにはどうすればよいですか?
- 14. render()で.selectedIndexを呼び出すにはどうすればよいですか?
- 15. SwiftでNSLocalizedStringWithDefaultValueを呼び出すにはどうすればよいですか?
- 16. MVC4でカスタムモデルバインダーを呼び出すにはどうすればよいですか?
- 17. ViewPagerOnTabSelectedListenerをプログラムで呼び出すにはどうすればよいですか?
- 18. クラスオブジェクトで.lowerを呼び出すにはどうすればよいですか?
- 19. ムービークリップをランダムに呼び出すにはどうすればよいですか?
- 20. TeamCityでキャプチャされるメッセージをFinalBuilderから出力するにはどうすればよいですか?
- 21. コマンドラインですべてのコマンドと出力をキャプチャするにはどうすればよいですか?
- 22. Rustでブロックせずに子プロセスの出力を読み取るにはどうすればよいですか?
- 23. audioPlayerDidFinishPlayingを呼び出すにはどうすればよいですか:
- 24. Ajaxを呼び出すにはどうすればよいですか?
- 25. オブジェクトのカスタムメソッドを呼び出すにはどうすればよいですか?
- 26. JavaScript関数を呼び出すにはどうすればよいですか?
- 27. 移動コンストラクタを呼び出すにはどうすればよいですか?
- 28. dojo.io.iframe.send呼び出しからステータスコードを抽出するにはどうすればよいですか?
- 29. プレーンなnativescriptでのAPI呼び出しが機能しているので、角DOMでAPIを呼び出すにはどうすればよいですか?
- 30. matlabで外部スクリプトを呼び出して出力をキャプチャする
:STD ::実行が削除されている、 'のstd :: IO :: process'代わりに(答えを見ます以下)。 – jgillich
これは 'std :: process'となり、現在はrustc 1.19.0です。 – WiSaGaN