os.system()
関数は、実行中の次の3つのステップでコマンド実行結果、システム()関数の戻り値を返します。
図1に示すように、子プロセスをフォーク;
2、コマンドを実行するために、子プロセスでexec関数を呼び出します。
図3は、親プロセスで子プロセスの終了を待つ待機(ブロック)を呼び出します。
戻り値0コマンドは、成功、失敗の他であることを示しています。
注:エラーが頻繁に何とかこの機能を使用発生しますが、問題は、直接コマンドを実行していなかった、それが一般的に推奨されます。
用法:os.system( "コマンド")
os.popen()
この呼び出しは、導管の方法によって達成される機能は、オブジェクトファイルリードを返し、それが読み取る読み取り、readlines出力を見て、他の操作を行います。
注:コマンドが失敗した場合は、内容を読み取ることができません。
用法:os.popen( "コマンド")
subprocess.Popen()
os.system、os.spawn *、os.popen *など:subprocessモジュールは、次のような、古いモジュールや機能の一部を交換することをお勧めします
サブプロセスモジュールの目的は、新しいプロセスをフォークし、最も一般的に使用されるクラスpopenの定義である、と通信するために、popenのは、プロセス及び複雑な相互作用およびプロセスを作成するために使用できます。その関数のプロトタイプは次のとおりです。
クラスsubprocess.Popen(引数、BUFSIZE = 0、実行=なし、STDIN =なし、STDOUT =なし、標準エラー=なし、preexec_fnに=なし、close_fds = Falseに、シェル= Falseを、CWD =なし、ENV =なし、universal_newlines =偽、STARTUPINFO =なし、creationflags = 0)
引数:このパラメータは、文字列またはリストのメンバーの文字列でなければなりません。これは文字列のリスト、あなたがプログラムとプログラム名を実行したいパスの後、最初のメンバーである場合はどこ;パラメータに第二の部材から始まるプログラムを実行するための最後のメンバーは、入力が必要です。
実行ファイル:指定し実行するためのプログラムを指定した引数で実行するプログラムが指定されているので、これはほとんど、使用されません。STDIN、STDOUT、標準エラー:カノニカル入力、標準出力と標準エラー処理を表します。値の選択肢は、既存のファイルオブジェクトとNONEを開いて、PIPEです。stdoutはファイルオブジェクトである場合、そのオブジェクトは、ファイルが開いていることを確認することです。
シェル:デフォルトはFalseです。シェルパラメータがTRUEに設定されている場合は、コマンドに応じて設定シェルパラメータは、実行される、実行可能プログラムは、シェルの使用を指定します。Windowsプラットフォームでは、デフォルトのシェルはCOMSPEC環境変数で指定されています。
bufsizeは:指定のバッファを。0非バッファ、ラインバッファ、他のバッファサイズ、バッファシステム負
CWD:子プロセスのカレントディレクトリを設定するために使用
標準入力、標準出力、標準エラー出力:標準入力、標準出力を表し、標準エラー手順がsubprocess.PIPEまたは他のプログラム、ファイルすることができます。
ENV:子プロセスの環境変数を指定するために使用されます。ENV =なし、環境変数の子プロセスは親プロセスから継承された場合。
universal_newlines:異なる改行の異なるシステム、真すなわち使用\ nは
preexec_fnに:UNIXプラットフォームでのみ有効、実行可能なオブジェクト(呼び出し可能オブジェクト)を指定するために使用され、それが子プロセスの実行前に呼び出されます。
用法:子= subprocess.Popen([ "CMD"、 "ARG1" ...])
クラスsubprocess.Popen呼び出すことができる方法の例
Popen.poll()は子プロセス(コマンド)をチェックするために使用されるリターン・ステータスコードの後、最後ではなく、戻りなしの終わりに行われています。
Popen.wait仕上がりに子プロセスのために(タイムアウト=なし)待ち、およびステータスコードを返し、プロセスがタイムアウトを秒数を指定した後、TimeoutExpiredが例外をスローします終わっていない場合。
Popen.communicate(入力=なし、タイムアウト=なし)このメソッドは、それがファイルの終わりに達するまで、そのような標準入力、標準出力にデータを送信するように、プロセスと相互作用およびstderrからデータを読み出すために使用することができます。
Popen.send_signal(信号)は、子プロセスに指定されたシグナルを送ります。
子プロセスを停止するPopen.terminate()。
子プロセスを殺すためにPopen.kill()。
概要
サブプロセスは、os.systemや他の機能、subprocess.call()、subprocess.check_call()、subprocess.check_output()とsubprocess.run()関数は、これらの高い要求を満たすことができない、我々はsubprocess.Popenを使用することができますを置き換えるために使用されます私たちが必要とする複雑な機能を実装するクラス。