6.9 popen2 -- アクセス可能な I/O ストリームを持つ子プロセス生成

Unix, Windowsプラットフォームで利用できます。

このモジュールにより、Unix および Windows でプロセスを起動し、 その入力/出力/エラー出力パイプに接続し、そのリターンコード を取得することができます。

Python 2.0 から、この機能は os モジュールにある 関数を使って得ることができるので注意してください。 os にある関数はこのモジュールにおけるファクトリ関数 と同じ名前を持ちますが、戻り値に関する取り決めは os の関数の方がより直感的です。

このモジュールで提供されている第一のインタフェースは 3 つの ファクトリ関数です。これらの関数のいずれも、bufsize を 指定した場合、 I/O パイプのバッファサイズを決定します。 mode を指定する場合、文字列'b' または 't' でなければなりません; Windows では、ファイルオブジェクトを バイナリあるいはテキストモードのどちらで開くかを決めなければ なりません。mode の標準の値は 't' です。

Unixではcmdはシーケンスでもよく、その場合には (os.spawnv()のように)引数はプログラムシェルを経由せず直接渡 されます。 cmdが文字列の場合、(os.system()のように)シェルに渡されます。

子プロセスからのリターンコードを取得するには、Popen3 および Popen4 クラスの poll() あるいは wait() メソッドを使うしかありません; これらの機能は Unixでしか利用できません。この情報は popen2()popen3()、および popen4() 関数、 あるいは os モジュールにおける同等の関数の 使用によっては得ることができません。 (osモジュールの関数から返されるタプルはpopen2モ ジュールの関数から返されるものとは違う順序です。)

popen2( cmd[, bufsize[, mode]])
cmd をサブプロセスとして実行します。ファイルオブジェクト (child_stdout, child_stdin) を返します。

popen3( cmd[, bufsize[, mode]])
cmd をサブプロセスとして実行します。ファイルオブジェクト (child_stdout, child_stdin, child_stderr) を返します。

popen4( cmd[, bufsize[, mode]])
cmd をサブプロセスとして実行します。ファイルオブジェクト (child_stdout_and_stderr, child_stdin). バージョン 2.0 で 新たに追加 された仕様です。

Unixでは、ファクトリ関数によって返されるオブジェクトを定義している クラスも利用することができます。これらのオブジェクトは Windows 実装 で使われていないため、そのプラットフォーム上で使うことはできません。

クラス Popen3( cmd[, capturestderr[, bufsize]])
このクラスは子プロセスを表現します。通常、 Popen3 インスタンスは上で述べた popen2() および popen3() ファクトリ関数を使って生成されます。

Popen3 オブジェクトを生成するためにいずれかのヘルパー関数を 使っていないのなら、cmd パラメタは子プロセスで実行する シェルコマンドになります。capturestderr フラグが真であれば、 このオブジェクトが子プロセスの標準エラー出力を捕獲しなければならない ことを意味します。標準の値は偽です。bufsize パラメタが存在 する場合、子プロセスへの/からの I/O バッファのサイズを指定します。

クラス Popen4( cmd[, bufsize])
Popen3 に似ていますが、標準エラー出力を標準出力と同じファイル オブジェクトで捕獲します。このオブジェクトは通常 popen4() で 生成されます。 バージョン 2.0 で 新たに追加 された仕様です。



ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。