問題タブ [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.

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

c# - 両方の実行中にC#アプリからC ++アプリに情報を渡すための最良の方法は何ですか?

WindowsフォームC#アプリからMFC C ++アプリの実行中に情報を渡すための最良の方法は何でしょうか?小さな文字列だけを送信する必要はありません。

ありがとう、ジェフ

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

linux - D-Bus の基本的なトランスポートは何ですか?

D-Bus は、プログラムが通信できるようにします。この IPC はどのように実装されていますか? Unix ドメイン ソケット、共有メモリ + セマフォ、名前付きパイプ、その他の何か? もしかして組み合わせ?

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

c - 親子IPCにCでパイプを使用するとプログラムがブロックされる

ソケット接続を受け入れるときに fork() が子プロセスからオフになるサーバーを作成しています。

子がクライアントと通信するとき、その情報の一部を親に送り返す必要があります。これを実現するためにパイプを使用しています。

問題は、親子 IPC を実行しようとすると、子からの入力を読み取るときに親がブロックすることです。つまり、子が同時に実行されていても、それらはすべて親を待っているため、一度に 1 つずつしか処理できません。

私のコードは次のようになります(簡潔にするためにエラーチェックは削除されています):

だから私の質問は、どうすればこれを解決できますか? ブロックされないように、親がパイプを使用して子と通信するにはどうすればよいですか?

これはパイプでも可能ですか、それとも代わりに共有メモリ(セマフォを使用すると思います)またはメッセージキューを使用する必要がありますか? (この投稿を読みました: Unix/Linux IPC の比較ですが、これらのタスクが実際にどのように達成されるかの例を見つけるのは非常に困難です。)

詳細:

次のことを行うテスト プログラムがあります。 1. サーバーに接続する 2. スリープ(5) 3. サーバーから切断する

このプログラムの 2 つのインスタンスを実行すると、サーバーは次のように出力します。

明らかに、各クライアントを一度に 1 つずつ処理します。

IPC を削除すると、親と子の両方からパイプ read() と write() を削除すると、次のようになります。

これは私が欲しいものです!

これを達成する方法について何か考えはありますか?(または、この問題を解決しようとしている方法を変更する必要がありますか?)

(編集: これはネットワーク クラスの課題の一部です。集中型サーバーを使用してピアを管理する P2P プロトコルを実装しています。任意の言語を使用できますが、C で試してみようと思いました。)

0 投票する
6 に答える
13715 参照

c# - Win32 ハンドルから System.Windows.Form インスタンスを取得するにはどうすればよいですか?

次のコードは、アプリケーションのインスタンスを 1 つだけ実行できるようにする単純なシングルトンを実装しています。ただし、別のインスタンスが開始された場合は、そのインスタンスのコマンドライン引数を取得し、それを最初のインスタンスに渡してから、2 番目のインスタンスを終了できる必要があります。

アプリケーションの最初のインスタンスを取得しようとすると、問題が発生します。そのインスタンスのメイン フォームのハンドルを見つけたら、それをControl.FromHandle()メソッドに渡しMainFormます。代わりに、戻り値は常にnullです。(Control.FromChildHandle()同じ結果が得られます。)

したがって、私の質問は単純です: 私は何を間違っていますか? そして、これは.NETでも可能ですか?

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

.net - IPCのトラブルシューティング

IPCのトラブルシューティングを行うための最良の方法は何ですか?

(ソースコードを要求せずに)問題を特定するためのツール/トリックはありますか?

私は2つのサードパーティコンポーネントを持っています。IPCサーバーの構成とクライアントの構成は正しいようです。しかし、2つのコンポーネントは通信したくありません。1つのコンポーネントがnullオブジェクト例外をスローします。これは、リモート設定の問題が原因であると私は考えています。

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

ipc - 多くのプロセスがposixの名前付きパイプで単一のリーダーに書き込むことへの影響はありますか?

私はPOSIX(OSX)用のプログラムを書いています。ここでは、本質的にロギングスレッドである1つのリスナーにメッセージを送信する多くのプロセスがあります。すべてのプロセスは個別のプログラムで実行され、多くのプロセスが書き込む単一の名前付きパイプ (FIFO) を使用しますが、単一のプロセスのみが読み取りを行うのは非常に魅力的です。

質問:

1) これは機能しますか? - bash を使用して、複数のプロセスが書き込みを行う fifo をセットアップすることで、これを機能させることができるので、理論的にはこれが機能することがわかっています。しかし、実際には、私が見落としている問題はありますか?

シェル #1

シェル #2 と #3

2) 各ライターが比較的短いメッセージ (< 100 バイト?) のみを書き込む場合、 write() への各呼び出しが全体としてリーダーに送信されると想定できますか? それとも、あるメッセージの半分が、別のライターからの別のメッセージの半分で文字化けする危険がありますか?

アドバイスをありがとう。

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

sockets - プロセス間のソケット受け渡し

Windowsでプロセス間(同じアドレス空間ではない)にソケットを渡す方法はありますか?

この情報Shared Socketsを見つけたので、それが可能であると信じています。

" WSADuplicateSocket 関数が導入され、プロセス間でソケットを共有できるようになりました"...

詳細 : Apache のソース コード (httpd-2.2.11-win32-src.zip) には、コメント付きの api WSADuplicateSocket の使用法があります。

[編集] 最近、この質問に関する素晴らしいサンプルを見つけました。
管理されていない世界で複製がどのように行われるか - ソケットの複製 - パート 1
管理されていないプロセスからソケットを転送することは可能ですか? - ソケット複製 - パート 2

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

winapi - WindowsサービスがユーザーのWindowsにメッセージを送信するための特別な考慮事項はありますか?

イベントを監視するWindowsサービスアプリケーション(GUIなし)を作成する必要があります。イベントが発生した場合は、標準のWindowsメッセージがアプリケーションに送信されます。アプリケーションのハンドルはDLLによってサービスに渡され、DLLはアンロードされるため、Windowsメッセージが使用したい方法です。

ただし、問題は、サービスがウィンドウハンドルにSendMessageを使用するために特別なことを行う必要があるかどうかです。これは、Vistaの別の画面または何かにある可能性があるためです。これは可能ですか?もしそうなら、私は何をしなければなりませんか?

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

c++ - イベントはプロセス間で実行できますか?

1つのプロセスでイベントを作成し、テストするために、パイプを介して完全に別のプロセス(子スレッドではない)にイベントハンドルを送信しました

最初にイベントを発生させたとき、WaitForSingleObjectはイベントを検出しないので、SECURITY_ATTRIBUTES構造体のトリックを見逃さない限り、答えはノーだと思いますか?

または、名前付きイベントを使用してOpenEvent()を呼び出す必要がありますか?

この場合、Windowsサービスにシグナルを送信しようとしているため、ウィンドウメッセージを使用できません。パイプを使うこともできますが、これらの用途はたくさんあるので、できれば「低コスト」の解決策を見つけたいと思います。

メモリマップトファイルのような他のオプションには、パイプよりもさらに多くのオーバーヘッドがありますか?

これをどのように行いますか?