問題タブ [external-process]
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プログラムから完全に独立したプロセスを起動するにはどうすればよいですか?
私はJavaで書かれたプログラムに取り組んでおり、一部のアクションでは、ユーザーが構成したコマンドラインを使用して外部プログラムを起動します。現在Runtime.exec()
、参照を使用して保持していませんProcess
(起動されたプログラムは、テキストエディタまたはアーカイブユーティリティのいずれかであるため、システムのin / out / errストリームは必要ありません)。
ただし、これには小さな問題があります。Javaプログラムが終了すると、起動されたすべてのプログラムが終了するまで実際には終了しません。
起動されたプログラムが、それらを起動したJVMから完全に独立している場合は、これを強くお勧めします。
ターゲットオペレーティングシステムは複数あり、Windows、Linux、Macが最小ですが、JVMを備えたGUIシステムが本当に望まれます(したがって、実際のコマンドラインのユーザー構成可能性)。
起動したプログラムをJVMから完全に独立して実行する方法を知っている人はいますか?
コメントに応じて編集する
起動コードは次のとおりです。コードは、特定の行と列に配置されたエディターを起動する場合もあれば、アーカイブビューアーを起動する場合もあります。構成されたコマンドラインで引用符で囲まれた値は、ECMA-262でエンコードされたものとして扱われ、デコードされて引用符が削除され、目的のexecパラメーターが形成されます。
起動はEDTで行われます。
これは、プログラムが私のIDEから起動されたときにのみ発生しているようです。問題は私の開発環境にのみ存在するため、この質問を閉じます。本番環境では問題ありません。回答の1つにあるテストプログラムと、私が実施したさらなるテストから、どのプラットフォームのプログラムのどのユーザーにも見られる問題ではないことに満足しています。
c# - 優先度の低いプロセスを開始します。try-catchなしで可能ですか?
少し前に、 app.PriorityClass = ? のときに発生するエラー メッセージについて質問しました。app.start の前でした。どうやら私が気に入らなかった解決策は、開始後にそれを書くことでした。
今日まで問題なく動作していました。「プロセスが終了したため、リクエストを処理できません」というメッセージが表示されます。例外が発生するのは、プロセスがすぐに完了して優先度が変更されないためです (場合によっては)。これを試してみるのは気分が悪いです。本当の解決策は何ですか?優先度の低いプロセスを起動するにはどうすればよいですか?
c# - C#:コンソールアプリケーションの出力をリダイレクトする:出力をフラッシュする方法は?
外部コンソールアプリケーションを生成し、非同期出力リダイレクトを使用しています。
このSO投稿に示されているように
私の問題は、 OutputDataReceivedイベント通知を受け取る前に、生成されたプロセスが一定量の出力を生成する必要があるように見えることです。
OutputDataReceivedイベントをできるだけ早く 受け取りたいです。
私は必要最低限のリダイレクトアプリケーションを持っています、そしてここにいくつかの観察があります:
1.単純な'while(true)print( "X");'を呼び出すとき コンソールアプリケーション(C#)出力イベントをすぐに受け取ります。2.サードパーティアプリを呼び出すと、コマンドラインからラップしようとしていますが、行ごとの出力が表示されます。
3.ベアボーンラッパーからそのサードパーティアプリを呼び出すと(1を参照)、出力はチャンク(約1ページサイズ)で提供されます。
そのアプリ内で何が起こりますか?
参考:問題のアプリは「USBeeDX Data Exctarctor(非同期バス)v1.0」です。
c# - 外部プロセスで実行される WPF「コントロール」を作成する
多数の子コントロールを含む WPF アプリがあります。
これらのコントロールの 1 つがサード パーティのライブラリをホストしており、その内部でネイティブ コードを実行し、アクセス違反をスローしてアプリケーションをクラッシュさせます。残念ながら、ライブラリを削除することはできません。
私がやりたいことは、新しい Windows プロセスを起動し、その中でサードパーティのライブラリをホストし、何らかの方法でそれと通信することです。Google Chrome と IE8 がブラウザ プラグインを処理するのとほぼ同じ方法です。
問題は、サードパーティのライブラリが画面に描画する必要があるため、WPF アプリのメイン ウィンドウ内に HTML iframe に相当するものを何らかの方法で配置する必要があることです。
どうやってこれを始めたらいいのかわからない。どんなアドバイスでも大歓迎です。
c# - サービスからプログラムを実行できません
外部プログラムを定期的に実行したい Windows サービスがあります。今のところ普通にやってます
これは機能していないようです。OnStart
サービスのハンドラーで開始された別のスレッドからこれを実行しています。これに概念的な問題はありますか?このようなサービスから外部プログラムを実行することはできませんか?
c# - 一定期間後に外部プロセスを強制終了する
C# クラス ライブラリから実行されるコマンド ライン実行可能ファイルがあります。非常にまれな状況で、実行可能ファイルに渡されたコマンド ライン データが原因で、実行可能ファイルがハングすることがあります。残念ながら、これにより、c# DLL を呼び出すアプリケーションがハングアップし、プロセスが終了するまで無期限に待機します。
コマンドラインexeが1秒以内に実行を終了しない場合、決して終了しません。私がやりたいのは、プロセスが開始された直後にタイマーを生成し、数秒以内に終了していない場合はプロセスを強制的に閉じることです。
ここで最善のアプローチは何ですか?このコマンド ライン プロセスは非常に反復的なタスクのボトルネックになるため、ソリューションはパフォーマンスへの影響を最小限に抑える必要があります。
編集: Threading.Timer ではなく System.Timer を使用する必要がある理由、またはその逆の理由はありますか?
コマンド ライン アプリがハングする原因を突き止めようとする提案や、コマンド ライン機能をソース コードにリファクタリングする必要があるという提案は控えてください。私たちはその問題に積極的に取り組んでいますが、アプリケーションの安定性を第一に考える必要があります。
php - PHPから外部シェルスクリプトを呼び出し、そのプロセスIDを取得します
PHP自体から外部シェルスクリプト(または外部PHPスクリプト)を呼び出して、同じスクリプト内でそのプロセスIDを取得するにはどうすればよいですか?
python - Python: タイムアウトでプロセスを実行し、stdout、stderr、および終了ステータスをキャプチャします
重複の可能性:
タイムアウトのあるサブプロセス
Pythonで次のことを行う最も簡単な方法は何ですか:
- 外部プロセスを実行する
- 文字列、stderr、および終了ステータスで stdout をキャプチャする
- タイムアウトを設定します。
私はこのようなものが欲しいです:
python - バックグラウンドで外部スクリプトを起動して実行する方法は?
私はこれらの2つの方法を試しました:
どちらのアプローチも、メイン プロセスをブロックする test.py が終了するまで待機する必要があります。「nohup」がその仕事をすることができることを私は知っています。test.py またはその他のシェル スクリプトを起動し、バックグラウンドで実行したままにする Python の方法はありますか?
test.py が次のようになっているとします。
os.system() または subprocess.Popen() はどちらも、1000000 行の出力が表示されるまでメイン プログラムをブロックします。私が望むのは、test.py をサイレント モードで実行し、メイン プログラムの出力のみを表示することです。test.py がまだ実行されている間、メイン プログラムが停止することがあります。