問題タブ [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.
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にあります
関連コード:
python - ヒアドキュメントを使用したPythonサブプロセス
Pythonのサブプロセスモジュールで遊んでいて、いくつかの例を試しましたが、ヒアドキュメントステートメントを機能させることができないようです。
これが私が遊んでいた些細な例です:
上記のコードを実行すると、次のエラーが発生します。
私はそれを間違っていますか?これも可能ですか?もしそうなら、私はそれをどのように行うのですか?
アップデート
これを行うためのより良い方法があるので、これは実際のPythonプログラムでは決して実行されるべきではないと言いたかっただけです。
python - subprocess.Popen() から出力を取得する方法。proc.stdout.readline() がブロックされ、データが出力されない
Test_Pipe.py の実行からの出力が必要です。Linux で次のコードを試しましたが、うまくいきませんでした。
Test_Pipe.py
Caller.py
回線proc.stdout.readline()
がブロックされているため、データは出力されません。
python - subprocess.call の問題
私の現在の作業ディレクトリには、ディレクトリ ROOT/ があり、その中にいくつかのファイルがあります。
私は実行できることを知っcp -r ROOT/* /dst
ており、問題はありません。
しかし、Python コンソールを開いて次のように書いた場合:
うまくいきません!
このエラーがあります:cp: cannot stat ROOT/*: No such file or directory
手伝って頂けますか?
python - 実行中のプロセスから関数を呼び出す
私のプログラムはサブプロセスを開始します。サブプロセスは、初期化後にある種のシグナルを親に送信する必要があります。このシグナルが送信されたときに呼び出されるハンドラーを親に設定できれば、完了です。それを行う方法はありますか?
アレンディット
python - Python2.5以下でシェルを使用せずに実行可能なプロセスを作成する
タイトルの内容:
subprocess
モジュールは2.4および2.5で動作するため、使用できません。- 引数を渡すためにシェルプロセスを生成しないでください。
(2)を説明するために、次のコードを検討してください。
ご覧のとおり、システムシェル( "sh")を介して、指定されたコマンド( "foo")を表示os.system
して実行します。os.popen
私はこれが起こらないようにしたいです(そうでなければ、醜い「見つかりません」メッセージが私の制御なしでプログラムstderrに出力されます)。
最後に、このプログラムに引数を渡すことができるはずです(上記の例では「arg」)。
Python 2.5および2.4でこれを行うにはどうすればよいですか?
python - Pythonでプロセスステータスを追跡する
Pythonスクリプトでいくつかのサブプロセスを開始し、それらがいつ完了するかクラッシュするかを追跡したいと思います。
subprocess.Popen.poll()は、プロセスがまだ実行中の場合はNoneを返し、成功した場合は0を返し、失敗した場合はゼロ以外を返すようです。それはすべてのOSで期待できますか?残念ながら、これらのメソッドには標準ライブラリのドキュメントがありません...
サブプロセスモジュールは、この目標を達成するのに最も適していますか?
ありがとう
python - Djangoで、起動時間が遅いサブプロセスを呼び出す方法
LinuxでDjangoを実行していて、ビューがあり、そのビューが作成するファイルを操作するcmdというサブプロセスからデータを返すようにしたいとします。たとえば、次のようになります。
ここで、cmdの起動時間は非常に遅いが、動作時間は非常に速く、ネイティブにデーモンモードがないとします。このビューの応答時間を改善したいと思います。
ワーカープールでcmdのインスタンスをいくつか起動し、入力を待機させ、call_processにそれらのワーカープールプロセスの1つにデータの処理を依頼させることで、システム全体の実行速度を大幅に向上させたいと思います。
これは実際には2つの部分です。
パート1。cmdおよびcmdを呼び出す関数は入力を待ちます。これはパイプで行うことができます、すなわち
パート2。データを待機しているバックグラウンドで実行されている一連のワーカー。つまり、サブプロセスがすでに実行されるように上記を拡張する必要があります。たとえば、Djangoインスタンスが初期化されるとき、またはこのcall_processが最初に呼び出されるときに、これらのワーカーのセットが作成されます。
次のように、どこかにワーカーの初期化が必要です。
さて、私が上に持っているものは次のようなものになります:
さて、質問:
これは機能しますか?(これを頭のてっぺんからStackOverflowに入力したので、問題があると確信していますが、概念的には機能します)
探すべき問題は何ですか?
これに代わるより良い方法はありますか?たとえば、スレッドも同様に機能しますか(Debian Lenny Linuxです)?このような並列プロセスワーカープールを処理するライブラリはありますか?
意識すべきDjangoとのやり取りはありますか?
読んでくれてありがとう!これが私と同じくらい面白い問題だと思っていただければ幸いです。
ブライアン
python - stdout=PIPE の場合、subprocess.Popen wait() が永遠に待機する理由を確認するにはどうすればよいですか?
stdout および場合によっては stderr に書き込むプログラムがあります。stdout と stderr をキャプチャして、python から実行したいと思います。私のコードは次のようになります:
いくつかのプログラムでは、これで問題なく動作しますが、新しいプログラムを追加すると、新しいプログラムが永久にハングします。を削除するstdout=PIPE
と、プログラムはその出力をコンソールに書き込み、終了し、すべて問題ありません。ハングの原因を特定するにはどうすればよいですか?
Windows XP で Python 2.5 を使用しています。プログラムは stdin から読み取りませんし、いかなる種類のユーザー入力 (つまり、「キーを押す」) もありません。
python - Python subprocess.Popen - GCC フラグを追加すると「入力ファイルがありません」というエラーが発生する
subprocess.Popen を使用して GCC を呼び出すビルド プロセスを自動化する Python スクリプトを作成しています。私の最初の試みはうまくいきます。
ただし、追加のオプションを GCC に渡すと、以下に示すように「入力ファイルがありません」というエラーが表示されます。
この問題を引き起こしている可能性のあるアイデアはありますか?