問題タブ [child-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.
javascript - javascript 無限ループを止める
これは node.js です。
いくつかの条件が満たされると無限ループになる関数があります。信頼できないユーザーがこれらの条件を設定しているため、この質問の目的のために、無限ループは修正不可能であると想定してください。
それでも、無限ループを止める方法が必要です。
これが私がやろうとしていることのサンプルコードです:
だから私がやろうとしていることに基づいていくつかの質問。
infiniteloop
変数がtrueに設定されている場合、ループは正しく停止しますか?- 無限ループを検出するにはどうすればよいですか? 3秒ごとにチェックするものがいいでしょう。
infiniteloop
同じプロセス上にある場合、ループ中に変数を変更することはできません。変数を別のプロセスに保存する必要がありますか?- 無限ループを検出したものは、別のプロセスに存在する必要がありますか? 理想的には同じプロセスがいいでしょうが、何がうまくいきますか?
ご協力いただきありがとうございます。
node.js - Node.jsスポーンvlc子プロセスがエクスプレスで機能しない
node.jsとexpressを使用して、ブラウザーで操作できるホームメディアセンター用のコントローラーを作成しています。
VLCプロセスを生成するのに多くの問題がありますが、奇妙なことに、ファイルから実行するときではなく、ノードプロンプトから実行するときにのみ機能します。
これが私がテストしたものです:
ノードのコマンドライン/インタープリター:require('child_process').spawn('vlc');
これは期待どおりに機能します。vlcウィンドウが開いて画面に表示されたままになっているのがわかります。
まったく同じコード行を別のファイル(たとえばtest.js)に配置し、コマンドラインから実行してnode test.js
も何も起こりません。数秒後に子プロセスオブジェクトをログアウトすると、次のようになります。
これについて特に奇妙なのは、同じ方法で他のプログラムを起動でき、それが機能することです。たとえば、「vlc」を「gedit」に置き換えると、テキストエディタが期待どおりに表示されます。
誰かがこれが何であるかについてのアイデアを持っていますか?
python - Python子プロセスからNode.jsへのデータの取得
Pythonでいくつかのコードがあり、から Python コードを呼び出していますNode.js
。コードを実行することはできますが、データを Python からnode.jsにストリーミングすることに行き詰まっています。
にデータをストリーミングする方法を特定するのを手伝ってくださいnode.js
。
PS私はPythonとNode.jsの両方が初めてです
node.js - スクリプトが強制終了された場合、node.jsで生成されたプロセスが残ります
親が強制終了されたときに、node.js child_processで生成されたプロセスが強制終了されることを確認することは可能ですか?
スクリプトの例を次に示します
プロセスツリーを見ると、次のことがわかります。
その後、そのスクリプトを停止する必要があり、ctrl-cを実行できません(ssh接続が失われたと言います)
テールプロセスがまだ実行中であり、どの親からも切り離されていることがわかります。
スポナーが殺された場合にスポーンされたプロセスを殺すプログラム的な方法はありますか?
スポーンするために渡すことができるオプションはありますか、それとも別の方法を使用する必要がありますか、それともキルシグナルをキャッチする必要がありますか(そしてそれはキル-9で機能しますか)?
ruby - EventMachine DeferrableChildProcess エラー処理
EventMachine::DeferrableChildProcess.open
実際に何らかのエラー処理を行うのに問題があります。うまくいけば、私はそれを間違っています。次に例を示します。
このコードの結果は (実際にはシステムにディレクトリがないと仮定して/trolol
)、"Failed: <SomeErrorObject>" になると思います。代わりに、「一部のデータを受信しました: ''」が表示されます。さらにひどいことに、("ls: cannot access /trololo: No such file or directory")によって引き起こされたエラー メッセージls
が何らかの形で stderr に出力されます。
私は何か間違ったことをしていますか、それとも基本的にエラー処理はありませEM::DeferrableChildProcess.open
んか? と同様の結果が得られましEM.popen
た。
node.js - nodejs子プロセスでsvnlsコマンドを実行しようとするとエラーが返されます
svn ls <path>
試してみるとコマンドを実行したいのですが、次のようなエラーが発生します
これは、パスなしで、SVNによってバージョン管理されていないディレクトリでコマンドを実行しようとすると発生する標準エラーです。ただし、コマンドを実行する前にconsole.logを実行すると、リモートSVNリポジトリへの完全で有効なパスが具体的に示されます。
例えば、svn ls https://svn.example.com/this/is/a/valid/repo
ログをコピーして自分のbashに貼り付けると、ディレクトリが正常に一覧表示されます。
これが私が実行しようとしているコードです
または、bashインスタンスを生成するより詳細な方法を試しました。
また、同じエラーをコンソールと終了コード(1)に出力します。
なぜこれが失敗しているのか誰かが知っていますか?
node.js - node.jsからsshコマンドを生成するときにキーファイルを渡す方法は?
これは私のローカル端末から動作します:
もちろんそうです。しかし、node.js のchild_process.spawn
コマンドを使用して同じことを試みると、キーが存在しない/アクセスできないと不平を言います。
結果:
試したこと:
キーへのパスのバリエーション:
/actual/path/to/mykey.pem
mykey.pem
(ノード プロジェクトのルートにある
/mykey.pem
ファイルのコピー) (ノード プロジェクトのルートにあるファイルのコピー)
~/.ec2.mykey.pem
(あるべき場所)ssh部分なしでコマンドを実行します。
childProcess(ls);
- 動作します。chmod 644, 600, 400 etc. mykey.pem
この時点での私の唯一の理論は、ファイル参照を渡すことに問題があり、 fs モジュールを使用して何かをする必要があるということです。(?) そして、はい、ノードで ssh アクセスするためのライブラリがあることは知っていますが、それらはそれをカットしないパスワードを使用しており、とにかく、私の要件はライブラリを正当化するものではありません。
私が愚かであり、これが可能であることを教えてください。
アップデート:
OK、次のようにexec コマンドを使用 できます。
それでも、素敵なメッセージングと便利なプロパティ (ローカルで正常に動作する私の元の実装) をすべて使用して真のスレーブを作成することからfork
、掃除機を持ち、すべての作業を自分で行うように言われること (今ではリモートホストでスレーブを起動したい)。
bash - 特定の子プロセスが終了したときに、bash スクリプトで通知を受け取るにはどうすればよいですか?
誰かがこれを手伝ってくれるのだろうか?
私はbashスクリプトを持っています。別の GUI ベースのアプリケーションであるサブプロセスを開始します。次に、bash スクリプトはインタラクティブ モードになり、ユーザーからの入力を取得します。この対話モードは無期限に続きます。サブプロセスの gui アプリケーションが終了したときに終了させたいと思います。
SIGCHLD を見てきましたが、これは答えではないようです。これが私が試したことですが、プログラムが終了したときに信号が届きません。
次の回答を更新しました。「nosid」からの提案を使用して、これが機能するようになりました。関連するもう 1 つの問題があります。これは、次のインタラクティブなプロセスが、ユーザーからのキー入力の待機をブロックする基本的なメニュー駆動型のプロセスであるということです。子プロセスが終了すると、入力が受信されるまで USR1 シグナルは処理されません。シグナルを強制的にすぐに処理する方法はありますか?
待機の様子は次のようになります。
ソリューションで更新されました。私はこれを解決しました。その秘訣は、読み取りにノンブロッキング I/O を使用することでした。今、「nosid」からの回答と私の修正により、私はまさに私が望むものを手に入れました。完全を期すために、これが私にとってうまくいくものです:
node.js - ビルドパックを使用したherokuのexecとPATH
herokuで casperjs を使用するために、このビルドパックを使用します。
アプリを作成したら、PATH
OK、casperjs はここにあります!
--
プロフィール
スクレイパー.js
--
しかし、スクレイパー プロセスを起動すると、次のログでクラッシュします。
にあるものがexec
見つからないのはなぜですか?casperjs
PATH
PS:試してみましspawn
たが、もう運がありません...
[編集]:テスト可能な要点はこちらhttps://gist.github.com/3856317
c# - 子プロセスがフリーズしたことを示すためにスローする例外
質問1-実用的
を使用して、C#アプリケーションで子プロセスを実行しますSystem.Diagnostics.Process
。次のように:
私は現在投げていSystem.ComponentModel.Win32Exception
ます。しかし、それが最良の選択かどうかはわかりません。子プロセスは単純なコマンドラインユーティリティです。では、最初の質問ですが、この状況でスローする例外は何ですか?
質問2-理論的
スローする例外について自問するのはこれが初めてではありません。そして、私は特定のものを選ぶ方法についての簡単なガイドラインを知りません。C#には非常に多くの例外があり、ある名前空間から別の名前空間に深く継承されています。2番目の質問、特定の状況でスローする例外を決定する方法は?