Python:するために使用されpty.フォーク()とos.フォーク()
質問
私は不透明を使用するかどうか pty.fork()
または os.fork()
産卵場が背景に外部プロセスからのアプリです。などのチェスエンジン)
たいに普プロセスの金型の場合は親が死亡するか、あるいは、産卵アプリ。
その起伏のフォークス?
解決
の子プロセスで作成され os.fork()
継承しstdin/stdout/stderrから親プロセスに子どもを作成 pty.fork()
は新しい擬似端子です。必要なものは、後に書くときのようなプログラムをxterm: pty.fork()
に親プロセスを返します記述子制御端子子プロセスできますので視覚的に表現して、そのデータから翻訳されユーザーの行動端子入力dnaの塩基配列を決定した。
更新:
からpty(7)manページ:
プロセスが期待で接続する インタでのスレーブ終了 の擬似端末にし、それに対する 駆動プログラムとは を開設し、修士ます。何をするにも ご覧になるには修士終了する のプロセスのスレーブ 終了とさせていた入力入力に とする。例えば、書面に 割り込み文字(通常 制御-C)のマスターデバイス を起こしに割り込み信号 (SIGINT)を生成するには、 前景の過程グループ に接続されません。逆に、 それぞれの スレーブの擬似端末で 読み込みによるプロセス マスタに接続す。
他のヒント
は、過去に私はいつもこのためsubprocess
モジュールを使用しました。これは、サブプロセスと通信するための優れたAPIを提供しています。
あなたはそれらの実行を阻止するためのcall(*popenargs, **kwargs)
を使用することができ、私は非同期実行を扱うことができるPopen
クラスを使用して信じています。
詳細はアウトドキュメントを確認します。
は限りos.fork
対pty.fork
を使用するなど、両方のは非常にプラットフォームに依存しており、どちらも窓では動作しません(あるいは、少なくともテストされています)。 pty
モジュールは、より多くのドキュメントを読むことによって2の拘束されているようです。主な違いは、擬似端末の局面です。あなたはsubprocess
モジュールを使用することができるようにするように建築家のあなたのコードを望んでいないのであれば、私はおそらくos.fork
の代わりpty.fork
で行くと思います。
Pseudotermialsは本当に、端末を期待するいくつかのアプリケーションのために必要です。対話型シェルは、これらの例の一つであるが、他の多くのがあります。 pty.forkオプションは、別のos.forkとしてではなく擬似端末を使用する特定のAPIとしてそこではありません。