問題タブ [ipc]
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.
perl - Perl プログラムが fork 後に子プロセスをリープしないのはなぜですか?
内部で使用するために、Perl を使用して最低限の ping スキャナーを作成しようとしています。24 ビットの CIDR ネットワークをスキャンするため、スクリプトをシングル スレッドで実行すると、実行に時間がかかりすぎます。プロセスを高速化するために fork 機能を追加しようとしましたが、一度にアクティブな子プロセスが 1 つしかなかったため、最初の試行にはほぼ同じ時間がかかりました。
私はperlipcドキュメントとPerl Cookbookで子プロセスを読み、2 番目のバージョンを思いつきました:
内部ネットワークをスキャンすると、出力は次のようになります。
結果からわかるように、スキャンに成功したスレッドは「up」メッセージを出力し、正常に終了して、親プロセスによってリープされます。一方、他の 251 のスレッドは、'/sbin/init' に接続されたままぶら下がったままになっています。exit ステートメントの直前の子処理ブロックに 'print "Child: $currIPending\n"' を追加すると、perl スクリプトが終了した「後」に、残りの 251 プロセスからの出力が端末に表示されます。
何が起きてる?$SIG{CHLD} サブルーチンと waitpid ループを組み合わせると、すべての子プロセスが取得され、システムにゾンビやダングリング プロセスが残らないようになると考えました。
同じ息で、特定の数の子プロセスをいつでも実行できるようにしたいと考えています。いつでも「n」人の子供よりも。これは可能ですか?はいの場合、私を導くのに役立つ疑似コードを入手できますか?
windows - ローカル コンピューター上の Windows メールスロットの最大サイズ
ローカル コンピューター内で IPC 用の Windows メールソットを調査した後、データグラムの最大サイズについて少し混乱しています。MSDNによると
「コンピューター間で送信されたとき」が私を混乱させているのです。同じマシン上のあるローカル プロセスから別のローカル プロセスにのみデータが送信される場合、最大サイズはありますか?
.net - C#/WPF アプリケーションがアプリ CLI を実装するためのシンプルな IPC メカニズム
だから私は.Netのプロセス間通信についてたくさん読んでいます。名前付きパイプ、リモーティング。それはすべて素晴らしいように思えますが、私がしなければならないことにはやり過ぎかもしれません。
コマンド ライン インターフェイスを WPF アプリケーションに追加したいので、1 つのプロセスから既に実行中のアプリに文字列を送信するための単純な IPC メカニズムが必要です。
そのためにSOは何を推奨していますか?
c# - exe C#から別のexeにメッセージを渡す
C# コンソール プログラムを 2 つ実行しています。1つから、2番目のexeに何かをするように指示する必要がありますか? これどうやってするの?私は見た
(Remotable.CommonAssembly)Activator.GetObject(typeof(Remotable.CommonAssembly)
しかし、ここから、exe のメソッドではなく、CommonAssembly(参照された dll) のメソッドを呼び出すことができます。
ipc - イントラネットアプリケーション間の通信
同じイントラネットに2つの別々のWebアプリケーションがあります。
2つのうちの1つは、Apacheを介して提供されるレガシーアプリケーション、厳密には静的サイトです。
もう1つのアプリケーションは新しく、私が現在構築しているもので、データベースを備えた動的サイトになります。
最初のアプリケーションでは、情報を収集し、情報を処理(投稿)して2番目のアプリケーションデータベースに保存するフォームページをいくつか作成したいと思います。
別のアプリケーションからの投稿をアプリケーションに受け入れさせたことがないので、続行するための最良の方法がわかりません。投稿するよりも良いアイデアがあれば、そう言ってください。また、2番目のアプリケーションに最初のアプリケーションからの情報を受け入れさせるには、特定の構成など、特に何かを行う必要がありますか。
重要な場合は、2番目のアプリケーションを完全に制御できます。これまでのところ、アプリケーションサーバーとしてGlassfishを使用し、言語としてjavaを使用しており、Springを使用しています。
linux - メッセージキューは Linux で廃止されましたか?
私は最近 Linux でメッセージ キュー (System V、しかし POSIX も問題ないはず) をいじっていますが、私のアプリケーションには完璧に思えますが、The Art of Unix Programming を読んだ後、それらが本当に良い選択であるかどうかはわかりません。 .
http://www.faqs.org/docs/artu/ch07s02.html#id2922148
System V IPC の上位のメッセージ パッシング レイヤーは、ほとんど使用されなくなりました。共有メモリとセマフォで構成される下位層には、相互排他ロックと、同じマシン上で実行されているプロセス間でのグローバル データ共有が必要な状況下でも重要なアプリケーションがあります。これらの System V 共有メモリ機能は POSIX 共有メモリ API に発展し、Linux、BSD、MacOS X、および Windows でサポートされましたが、従来の MacOS ではサポートされませんでした。
http://www.faqs.org/docs/artu/ch07s03.html#id2923376
System V IPC 機能は、Linux およびその他の最新の Unix に存在します。ただし、これらはレガシー機能であるため、頻繁に実行されることはありません。2003 年半ばの時点で、Linux バージョンにはまだバグがあることが知られています。それらを修正するのに十分なほど気にする人は誰もいないようです。
最近の Linux バージョンでも、System V メッセージ キューにはまだバグがありますか? 著者が POSIX メッセージ キューは問題ないと言っているのかどうかわかりません。
ソケットは、ほとんどすべて (?) で優先される IPC のようですが、ソケットなどを使用してメッセージ キューを実装するのが非常に簡単であることがわかりません。それとも私が複雑に考えすぎているのでしょうか?
組み込み Linux を使用していることが関連しているかどうかわかりません。
c# - ipcとは何ですか?どのように使用できますか?
.net の ipc とは何ですか? .net 2003 で ipc を使用できますか? 方法を説明してください。
perl - 子への書き込み時に親がブロックしないようにするにはどうすればよいですか?
最近、2 つのプロセス間で通信したいときに (pipe |-) を使用すると問題が発生しました。基本的に、子プロセスは、親プロセスが満たしたほど速く STDIN を処理できませんでした。これにより、親は STDIN が解放されるまで待機し、実行が遅くなりました。
STDIN のサイズと変更可能性。はいの場合、ベストプラクティスのサイズはどれくらいですか?
私が何を意味するかを示すコードサンプルを次に示します。
このサンプルanother_process_packet
ではprocess_packet
. このようなコードを書く理由は、同じデータをソケットから取得し、実際に一度取得したいからです。
前もって感謝します。
c++ - boost::interprocess::scoped_lock を保持している間にスリープすると、決して解放されません
参照に従ってLinuxでIPCを実行しています(匿名ミューテックスの例)。boost::interprocess::shared_memory_object
でラップされた;shared_memory_object
を保持しながら、 を作成して書き込むサーバープロセスがあります。そして、他の人が書いたものは何でも印刷するクライアントプロセス - この場合、それは.interprocess_mutex
scoped_lock
int
問題が発生しました。サーバーがミューテックスを保持している間にスリープ状態になると、クライアント プロセスはミューテックスを取得できず、永遠に待機します。
バグのあるサーバーループ:
サーバー出力:
クライアントループ:
クライアント出力 (永久に待機):
問題は、ブラケットをsleep
呼び出しの前の行に移動すると、すべてが機能することです。なんで?ロックされたミューテックスでスリープすると、ミューテックスが永久にロックされるとは思いませんでした。
私が持っている唯一の理論は、カーネルがサーバー プロセスを起動すると、スコープが終了し、ミューテックスが解放されるが、待機中のプロセスには実行の機会が与えられないというものです。その後、サーバーはロックを再取得します...しかし、それはあまり意味がないようです。
ありがとう!
perl - IPC::Open2::open2 が親プロセス ID を返すのはなぜですか?
Cygwin の Perl 5.10 で次のスクリプトを実行しています。
$pid の値は、実行中の perl プロセスの PID であり、 が指す実行可能ファイルの PID ではありません$exe
。何か案は?