問題タブ [subprocess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
794 参照

timer - スレッド、サブプロセス、ゾンビ

スレッドと SSH を使用して、正確な瞬間にそれぞれ複数のリモート ジョブを起動する必要があります。だから私は書く:

コードは機能しますが、OS がゾンビでいっぱいになります。正直なところ、私は、communication() メソッドが子プロセスを処理し、その終了を待っていると信じていました。どこが間違っていますか?

0 投票する
1 に答える
322 参照

python - 長時間実行サブプロセスの停止

長時間実行される subprocess.Popen() を使用してサブプロセスを作成します。独自のスレッドから呼び出され、サブプロセスが完了する/戻るまでスレッドはブロックされます。

サブプロセスを中断できるようにしたいので、必要なときにプロセスが終了します。

何か案は?

0 投票する
3 に答える
1189 参照

python - Python: サブプロセス モジュールを使用して、別のコマンドライン アプリケーションで読み書きできません

Windows で Python 3.0 を使用しており、コマンドライン アプリケーションのテストを自動化しようとしています。ユーザーは Application Under Test にコマンドを入力でき、出力が 2 つの XML パケットとして返されます。1 つはパケットで、もう 1 つはパケットです。これらのパケットを分析することで、結果を検証できます。私は以下のようにコードをahev

出力を戻すことができません。readline() を使用して出力を読み取ろうとした場所でスタックします。read() を試しましたが、それもスタックします

コマンドライン アプリケーションを手動で実行してコマンドを入力すると、出力が以下のように 2 つの xml パケットとして正しく返されます。

しかし、以下のように communicate() を使用すると、Sent パケットを取得し、Recv: パケットを取得しません。recv パケットが見つからないのはなぜですか? communicate(0 は stdout.rt?

動作するはずのサンプル コードを手伝ってくれる人はいますか? 別のスレッドで読み書きする必要があるかどうかはわかりません。私を助けてください。読み取り/書き込みを繰り返す必要があります。私が使用できるPythonの高度なレベルのモジュールはありますか。Pexpect モジュールが Windows で動作しないと思います

0 投票する
2 に答える
4291 参照

python - Python Popenの問題:ファイルが見つかりません

Pythonを使用してプログラムを実行しようとしています。

この小さなスニピットを実行すると、エラーが発生します。

WindowsError:[エラー2]システムは指定されたファイルを見つけることができません

プログラムが存在し、エクスプローラからexeへの絶対パスを直接コピーして貼り付けました。私は他のことを試しましたが、Pythonスクリプトを使用してEXEをソースフォルダーに配置し、「。/ sa.exe」を使用すると、機能することがわかりました。私が考えることができる唯一のことは、別のパーティション(F:)からPythonスクリプト(およびPython)を実行しているということです。

何か案は?ありがとう

0 投票する
7 に答える
25467 参照

python - 出力の大きいプロセスに subprocess.Popen を使用する

アプリの出力が少量の場合は正常に動作するが、出力が多い場合はハングする外部アプリを実行する Python コードがいくつかあります。私のコードは次のようになります:

ドキュメントには、潜在的な問題を示していると思われるコメントがあります。待機中は、次のとおりです。

警告: 子プロセスがstdoutまたはstderrパイプに十分な出力を生成し、OS パイプ バッファーがさらにデータを受け入れるのを待機するのをブロックする場合、これはデッドロックになります。communicate()それを回避するために使用します。

通信中ですが、次のように表示されます。

注 読み取ったデータはメモリにバッファリングされるため、データ サイズが大きい場合や無制限の場合は、このメソッドを使用しないでください。

したがって、大量のデータがある場合、これらのいずれかを使用する必要があるかどうかは不明です。その場合にどの方法を使用すべきかは示していません。

exec からの戻り値が必要であり、 と の両方を解析して使用しstdoutますstderr

では、大きな出力を持つ外部アプリを実行するための Python での同等の方法は何でしょうか?

0 投票する
3 に答える
8746 参照

python - Python でサブプロセスを使用したプロセスからのバッファリングされていない読み取り

長くて時間のかかる出力を生成するプロセスから読み取ろうとしています。ただし、生成されたときに出力をキャッチしたいと思います。しかし、次のようなものを使用すると、コマンドの出力がバッファリングされているように見えるため、出力行を一度に取得することになります。

MacOS 10.5でこれを試しています

0 投票する
30 に答える
343634 参照

python - タイムアウト付きのモジュール「サブプロセス」の使用

データを返す任意のコマンドを実行するstdoutか、ゼロ以外の終了コードで例外を発生させるPythonコードは次のとおりです。

communicateプロセスが終了するのを待つために使用されます:

モジュールはタイムアウト(subprocessX秒を超えて実行されているプロセスを強制終了する機能)をサポートしていないため、communicate実行に永遠にかかる場合があります。

WindowsとLinuxで実行することを目的としたPythonプログラムでタイムアウトを実装する最も簡単な方法は何ですか?

0 投票する
7 に答える
14905 参照

python - サブプロセスから環境を取得するには?

Python プログラムを介してプロセスを呼び出したいのですが、このプロセスには、別のプロセスによって設定された特定の環境変数が必要です。最初のプロセス環境変数を取得して 2 番目に渡すにはどうすればよいですか?

プログラムは次のようになります。

ただし、 to プロセスは同じ環境を共有していません。これらのプログラムは私のものではないことに注意してください (最初のファイルは大きくて醜い .bat ファイルで、2 番目のファイルは独自のソフトです) ので、変更することはできません (わかりました。.bat から必要なものをすべて抽出することはできますが、非常に面倒です)。 )。

注意: 私は Windows を使用していますが、クロスプラットフォーム ソリューションを好みます (ただし、Unix ライクでは問題は発生しません ...)

0 投票する
2 に答える
1368 参照

ruby - 現在の標準出力を見つけるか、出力をコンソールにリダイレクトする方法

私はUbuntu 9.04 x64を使用しています。

私はsudo bashを呼び出すファイルstartup.rbを持っているので、15分ごとにパスワードを入力せずに管理タスクを実行するためのルートコンソールが常にあります。

このスクリプトは別のスクリプトStartup.rbによって呼び出され、両方のファイルの内容は次のようになります -

ファイル~/Startup.rb

ファイル~/startup.rb

~/Startup.rbファイルをスタートアップ アプリケーションリストに含めました。

ここでの問題は、のターミナルでsudo bash、何かを入力して何らかの出力を期待しても、何も得られないことです。だから私が書くecho hello worldと、私は何の出力も得られません。sudo bashこれにより、コマンドの標準出力 (stdout) はコンソールではないと思われます。

だから、なぜこれが起こっているのか知りたいですか?現在の stdout パスを知るにはどうすればよいですか? または、stdout を現在のコンソールに戻すにはどうすればよいですか?

- ありがとう

0 投票する
7 に答える
34773 参照

python - サブプロセス: Windows での子プロセスの削除

Windows では、subprocess.Popen.terminatewin32 のTerminalProcess. ただし、終了しようとしているプロセスの子プロセスがまだ実行されているという動作が見られます。何故ですか?プロセスによって開始されたすべての子プロセスが強制終了されるようにするにはどうすればよいですか?