問題タブ [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 投票する
4 に答える
1526 参照

java - Java で「system」コマンドを実装する

Python、Perl、PHP、Rubyなどと同じ「システム」関数呼び出しが必要です。これは、Java で実行される Rhino JavaScript エンジンで実行されると、Narwhal と呼ばれる JavaScript 標準ライブラリのコンポーネントになります。

問題は、Java の標準ライブラリが、親プロセスの stdio を共有するサブプロセスを生成する機能を抽象化したように見えることです。これは、インタラクティブ性をサブプロセスに任せることができないことを意味します。

これに対する私の最初のクラックは、Python の subprocess.popen を実装することでした。これは、3 つの「パンパー」スレッドを使用して、親プロセスの stdio を個別にアクティブにコピーします (デッドロックを防ぐため)。残念ながら、これは 2 つの問題を引き起こしています。まず、サブプロセスが自発的に終了したときに入力が自動的に閉じられません。次に、子プロセスへのストリームが適切にバッファリングおよびフラッシュされません。

require("os").system() コマンドを期待どおりに機能させるソリューションを探しています。

プロジェクトはhttp://narwhaljs.orgにあります

関連コード:

0 投票する
4 に答える
3713 参照

python - ヒアドキュメントを使用したPythonサブプロセス

Pythonのサブプロセスモジュールで遊んでいて、いくつかの例を試しましたが、ヒアドキュメントステートメントを機能させることができないようです。

これが私が遊んでいた些細な例です:

上記のコードを実行すると、次のエラーが発生します。

私はそれを間違っていますか?これも可能ですか?もしそうなら、私はそれをどのように行うのですか?


アップデート

これを行うためのより良い方法があるので、これは実際のPythonプログラムでは決して実行されるべきではないと言いたかっただけです。

0 投票する
4 に答える
95328 参照

python - subprocess.Popen() から出力を取得する方法。proc.stdout.readline() がブロックされ、データが出力されない

Test_Pipe.py の実行からの出力が必要です。Linux で次のコードを試しましたが、うまくいきませんでした。

Test_Pipe.py

Caller.py

回線proc.stdout.readline()がブロックされているため、データは出力されません。

0 投票する
4 に答える
11431 参照

python - subprocess.call の問題

私の現在の作業ディレクトリには、ディレクトリ ROOT/ があり、その中にいくつかのファイルがあります。

私は実行できることを知っcp -r ROOT/* /dstており、問題はありません。

しかし、Python コンソールを開いて次のように書いた場合:

うまくいきません!

このエラーがあります:cp: cannot stat ROOT/*: No such file or directory

手伝って頂けますか?

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

python - 実行中のプロセスから関数を呼び出す

私のプログラムはサブプロセスを開始します。サブプロセスは、初期化後にある種のシグナルを親に送信する必要があります。このシグナルが送信されたときに呼び出されるハンドラーを親に設定できれば、完了です。それを行う方法はありますか?

アレンディット

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

python - Python2.5以下でシェルを使用せずに実行可能なプロセスを作成する

タイトルの内容:

  1. subprocessモジュールは2.4および2.5で動作するため、使用できません。
  2. 引数を渡すためにシェルプロセスを生成しないでください。

(2)を説明するために、次のコードを検討してください。

ご覧のとおり、システムシェル( "sh")を介して、指定されたコマンド( "foo")を表示os.systemして実行します。os.popen私はこれが起こらないようにしたいです(そうでなければ、醜い「見つかりません」メッセージが私の制御なしでプログラムstderrに出力されます)。

最後に、このプログラムに引数を渡すことができるはずです(上記の例では「arg」)。

Python 2.5および2.4でこれを行うにはどうすればよいですか?

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

python - Pythonでプロセスステータスを追跡する

Pythonスクリプトでいくつかのサブプロセスを開始し、それらがいつ完了するかクラッシュするかを追跡したいと思います。

subprocess.Popen.poll()は、プロセスがまだ実行中の場合はNoneを返し、成功した場合は0を返し、失敗した場合はゼロ以外を返すようです。それはすべてのOSで期待できますか?残念ながら、これらのメソッドには標準ライブラリのドキュメントがありません...

サブプロセスモジュールは、この目標を達成するのに最も適していますか?

ありがとう

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

python - Djangoで、起動時間が遅いサブプロセスを呼び出す方法

LinuxでDjangoを実行していて、ビューがあり、そのビューが作成するファイルを操作するcmdというサブプロセスからデータを返すようにしたいとします。たとえば、次のようになります。

ここで、cmdの起動時間は非常に遅いが、動作時間は非常に速く、ネイティブにデーモンモードがないとします。このビューの応答時間を改善したいと思います。

ワーカープールでcmdのインスタンスをいくつか起動し、入力を待機させ、call_processにそれらのワーカープールプロセスの1つにデータの処理を依頼させることで、システム全体の実行速度を大幅に向上させたいと思います。

これは実際には2つの部分です。

パート1。cmdおよびcmdを呼び出す関数は入力を待ちます。これはパイプで行うことができます、すなわち

パート2。データを待機しているバックグラウンドで実行されている一連のワーカー。つまり、サブプロセスがすでに実行されるように上記を拡張する必要があります。たとえば、Djangoインスタンスが初期化されるとき、またはこのcall_processが最初に呼び出されるときに、これらのワーカーのセットが作成されます。

次のように、どこかにワーカーの初期化が必要です。

さて、私が上に持っているものは次のようなものになります:

さて、質問:

  1. これは機能しますか?(これを頭のてっぺんからStackOverflowに入力したので、問題があると確信していますが、概念的には機能します)

  2. 探すべき問題は何ですか?

  3. これに代わるより良い方法はありますか?たとえば、スレッドも同様に機能しますか(Debian Lenny Linuxです)?このような並列プロセスワーカープールを処理するライブラリはありますか?

  4. 意識すべきDjangoとのやり取りはありますか?

読んでくれてありがとう!これが私と同じくらい面白い問題だと思っていただければ幸いです。

ブライアン

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

python - stdout=PIPE の場合、subprocess.Popen wait() が永遠に待機する理由を確認するにはどうすればよいですか?

stdout および場合によっては stderr に書き込むプログラムがあります。stdout と stderr をキャプチャして、python から実行したいと思います。私のコードは次のようになります:

いくつかのプログラムでは、これで問題なく動作しますが、新しいプログラムを追加すると、新しいプログラムが永久にハングします。を削除するstdout=PIPEと、プログラムはその出力をコンソールに書き込み、終了し、すべて問題ありません。ハングの原因を特定するにはどうすればよいですか?

Windows XP で Python 2.5 を使用しています。プログラムは stdin から読み取りませんし、いかなる種類のユーザー入力 (つまり、「キーを押す」) もありません。

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

python - Python subprocess.Popen - GCC フラグを追加すると「入力ファイルがありません」というエラーが発生する

subprocess.Popen を使用して GCC を呼び出すビルド プロセスを自動化する Python スクリプトを作成しています。私の最初の試みはうまくいきます。

ただし、追加のオプションを GCC に渡すと、以下に示すように「入力ファイルがありません」というエラーが表示されます。

この問題を引き起こしている可能性のあるアイデアはありますか?