StartProcess
StartProcess["executable"]
外部プログラムを実行し,結果のサブプロセスを表すProcessObjectを返す.
StartProcess[{"executable",arg1,arg2,…}]
外部プロセスを実行し,これに指定された引数 argiを渡す.
詳細
- StartProcessは,指定したプロセスが開始できる場合はProcessObjectを返す.それ以外の場合は$Failedを返す.
- StartProcessを使って,実行中のプロセスとインタラクトすることができる.Wolfram Engineをブロックせずに「バックグラウンドタスク」を実行することもできる.
- StartProcessは即座に戻り,開始されたプロセスが完了するのは待たない.プロセスの終了を待つのであればRunProcessを使うとよい.
- StartProcess[{"executable",arg1,arg2,…}]では,argiはToStringを使って文字列に変換される.
- Wolfram EngineはProcessObjectで表されるサブプロセスと,WriteLine,WriteString,BinaryWrite,ReadLine,ReadString,BinaryRead等の関数を使って交信できる.
- 標準の入力と出力およびエラーストリームは,ProcessConnectionを使って表すことができる.
- サブプロセスに関する情報は,ProcessStatusおよびProcessInformationを使って求めることができる.
- 使用可能なオプション
-
ProcessDirectory Inherited 初期作業ディレクトリ ProcessEnvironment Inherited サブプロセス与える環境変数 - デフォルトで,サブプロセスはWolfram Engineからそのプロセスのディレクトリと環境変数を継承する.
- Wolfram Engineが終了されると,サブプロセスも強制終了される.
- 引数 argiのいずれかが"name"->value の形の場合は,"--name=value"の形に変換される.name が単一の文字の場合は,ダッシュは1つしか使われない.
例題
すべて開くすべて閉じる例 (1)
考えられる問題 (4)
リストを使うことが,プログラムとその変数のためにStartProcessを呼び出す正しい方法である:
1つの文字列にコマンドと引数を入れてStartProcessを呼ぶことは許されていない:
同様に,プログラムの引数をStartProcessの引数としてStartProcessを呼ぶことは許されていない:
~ や * のような特殊記号は,StartProcessがシェルをスキップするので,シェル式を使っても変換されない:
dirやechoのようなシェルコマンドは,Windowsはバイナリではないのでは直接呼び出すことができない(Unixバイナリなので,Unixシステム上では使うことができる):
インタラクティブな例題 (1)
テキスト
Wolfram Research (2014), StartProcess, Wolfram言語関数, https://reference.wolfram.com/language/ref/StartProcess.html.
CMS
Wolfram Language. 2014. "StartProcess." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/StartProcess.html.
APA
Wolfram Language. (2014). StartProcess. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/StartProcess.html