問題タブ [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.
java - Eclipseでのプラグイン間通信
お互いを自動検出するEclipseプラグインを作成することは可能ですか?
私は2つの主要な状況で動作する必要があるプラグインのセットを開発しています:
- 個別に
- 互いに協調して。
個別に実行する場合、プラグインは「正常に機能する」必要がありますが、協調する場合、プラグインは同じモデルコンテンツの一部を共有し、プラグインの1つは、コンテンツを共有する他のプラグインのリストをユーザーに提示する必要があります。例えば:
Fooプラグインは、オントロジーを共有できる次のプラグインを検出しました。
[]バープラグイン
[]Bazプラグイン
[]共有しないでください
Eclipseは、他のプラグインのこの種の自動検出を容易にする内部公開/検出方法を提供していますか?
c - **ポータブル C** で、コマンドの stdin をランチャーの stdout に接続するコマンドを起動する方法は?
C プログラム (p1) で、p1 の標準出力から標準入力を読み取る、動的に構築されたコマンド (およびその引数) を起動する方法は?
ご了承ください:
この stdout --> stdin パイピング以外の方法も、Windowsと Linux 間で移植可能であればOK です。
ここでは C++、Java、Perl、Ruby、Python などは使用できません。
また、これには Windows ビルドの MinGW 依存関係がありますか?
REOPENED : 以下の質問は Linux の場合の回答ですが、この質問は移植可能な方法が必要です。 C プログラム内からプログラムを実行する
c# - .NET でのプロセス間通信
任意の数のサブプロセスを生成する必要があるコア .NET アプリケーションがあります。これらのプロセスは、コア アプリケーション内の何らかの形式の状態オブジェクトにアクセスできる必要があります。
最高のテクニックは何ですか?プロセス (ビットマップ) 間で大量のデータを移動するので、高速である必要があります。
python - Pythonを使用してアプリケーションのインスタンスを起動するにはどうすればよいですか?
一連のタスクを実行するPythonスクリプトを作成していますが、それらのタスクの1つは、Excelのインスタンスを起動して開くことです。私のスクリプトでそれを達成するための理想的な方法は何ですか?
java - Java IPC:GUIとコマンドライン
Javaアプリケーション用のコマンドラインインターフェイスを実装したいと思います。コマンドラインプログラムが別のJavaGUIプログラムの状態に影響を与えるようにしたい場合を除いて、これを行うのはそれほど難しくありません。たとえば、次のように入力できます。
また、実行中の別のGUIインスタンスが適切なアクションを実行します。
このようなものを実装する最も簡単な方法は何ですか?
c++ - クロスプラットフォーム双方向IPC
比較的簡単だと思っていたプロジェクトがありますが、思っていたよりも苦痛になりつつあります。まず、私が操作しているコードのほとんどは、制御できないレガシーコードであるため、大きなパラダイム変更を行うことはできません。
これが私がする必要があることの簡単な説明です:stdinから読み取り、stdoutに書き込む単純なプログラムがたくさんあるとしましょう。(これらは私が触れることはできません)。基本的に、stdinへの入力は「温度を100に設定」などのコマンドです。そして、出力は「温度が100に設定されました」または「温度が設定値を下回りました」というイベントです。
私がやりたいのは、これらの単純なプログラムの束を開始し、イベントを監視し、必要に応じてそれらにコマンドを送信できるアプリケーションを作成することです。私の最初の計画はpopenのようなものでしたが、読み取りパイプと書き込みパイプの両方を取得するには、双方向のpopenが必要です。popen2と呼ばれるものを一緒にハッキングし、実行するコマンドと、読み取りおよび書き込みストリームでいっぱいになる2つのFILE*を渡します。次に、各プロセスの各stdoutから読み取り、必要なロジックを実行してから、コマンドを適切なプロセスに書き戻す単純なループを作成するだけです。
これがいくつかの擬似コードです
実際のプログラムはより複雑で、ストリームを覗いて何かが待機しているかどうかを確認します。待機していない場合は、そのプロセスをスキップします。同様に、特定のプロセスにコマンドを送信する必要がない場合も同様です。しかし、このコードは基本的な考え方を示しています。
これで、これは私のUNIXボックスでうまく機能し、cygwinを搭載したWindowsXPボックスでもかなりうまく機能します。ただし、Win32でネイティブに動作させる必要があります。
難しいのは、私のpopen2がfork()とexecl()を使用してプロセスを開始し、子プロセスのstdinとstdoutにストリームを割り当てることです。Windowsでこれを行うことができるクリーンな方法はありますか?基本的には、UNIXバージョンと同じようにWindowsで動作するpopen2を作成したいと思います。このようにして、Windows固有のコードのみがその関数に含まれ、他のすべてが同じように機能するようになります。
何か案は?
ありがとう!
cross-platform - クロスプラットフォーム、クロス言語のメッセージング システム?
私は、計測データを処理するためのシステムを作成するために連携する一連のアプリケーションを開発しています。アプリを疎結合にしたい理由はいくつかあります。システムはサード パーティによって拡張可能であるべきです。そのため、アプリはメッセージングを介して結び付けられます。
(少なくとも) C#、Java、および Python でバインディングを提供し、Publish-Subscribe、Guaranteed Delivery、Selective Consumer (.Net Messaging の Peek など) などのメッセージング パターンをサポートするメッセージング システムを探しています。
私が知る限り、JMS または .Net Messaging に問題はありません。.Net / Java 専用であるというだけです。
システムは、チャネルを設定するときに使用するトランスポート メカニズム (ソケット、メッセージ キューなど) を制御できるようにする必要があります。リモート マシンへのスケールアウトと、ローカル トランスポート機能による高速化の両方を実現したいと考えています。
適切なものが見つからない場合は、自分で作成する必要があります。シリアル化にはおそらく Google のプロトコル バッファを使用します。テクノロジーのオプションについて他の推奨事項がある場合は、すぐに解雇してください。
ああ、そうです。チャネルごとまたはメッセージごとにオプションの暗号化を使用したいと考えています。
ETA: 迅速な返信ありがとうございます。私は現在、ドキュメントと宣伝を進めています。以下のテクノロジーを使用した人はいますか? 何のために / どのような結果が得られましたか?
security - あるアプリケーションから別のアプリケーションへのリモート投稿。安全保障問題?
あるアプリケーションで、そのアプリケーションの機能を利用するために別のアプリケーションに非表示の投稿を行うとしたら、セキュリティ上の問題はありますか?
c - ENOSYS で sem_open() が失敗するのを止めるにはどうすればよいですか?
2 つの Slackware Linux システムがあり、POSIX セマフォsem_open()
呼び出しが errno が 38 に設定されて失敗します。サンプル コードを以下に再現します (コードは CentOS / RedHat で正常に動作します)。
これを引き起こす可能性のあるカーネルまたはシステム構成オプションはありますか? 他の提案?
問題のあるシステムは Slackware 10.1.0 カーネル 2.6.11 /lib/librt-2.3.4.so /lib/libpthread-0.10.so ですが、同じコードはずっと古い RedHat 9 カーネル 2.4.20 /lib/librt でも動作します。 -2.3.2.so /lib/tls/libpthread-0.29.so. (CentOS 5 カーネル 2.6.18 /lib/librt-2.5.so /lib/i686/nosegneg/libpthread-2.5.so でも動作します)。
man sem_open
この errno はsem_open()
、システムでサポートされていないことを意味します。
sem_open()
ユーザー空間は動的librt
にリンクする場所librt
であり、影響を受けるシステムに存在します。
影響を受けるシステムは、POSIX セマフォをサポートすると主張しています:_POSIX_SEMAPHORES
は真であり、これをsysconf(_SC_SEMAPHORES)
確認します。
ありがとう、キエラン
編集 1: 使用中のソフトウェア バージョンの詳細を追加し、無関係なコメントを削除しました。
編集 2: /dev/shm は正常なシステムにマウントされ、不良なシステムにはマウントされません。これをマウントしても、影響を受けるシステムの動作は変わりませんでした。/dev/shm も必要だと思いますが、その前に sem_open() が失敗しており、strace がこれをサポートしています。
java - イメージを C プログラムから Java に移動して画面に表示する最も効率的な方法は?
バックグラウンド
video4linux 2 仕様を使用してビデオをキャプチャしています。C プログラムを使用してリアルタイムでキャプチャされます。また、ローカルとリモートの両方で実行できる Java フロントエンドもあります。リモート側は簡単でした。画像を JPEG に圧縮し、mini-http サーバーを介してクライアントに送信し、解凍して画面に表示するだけです。
ローカルで実行する場合、何らかの方法で IPC がそのメモリに直接接続し、Java から画像にアクセスできるようにしたいと考えています。次に、できるだけ少ない CPU パワーを使用してそれらを画面にブリットします。これは「監視」タイプのシステムなので、一度に 8 ~ 16 台のカメラ フィードを実行できます。
質問
画像データ (YUV420P) を v4l2 mmap バッファーから Java アプリに移動して画面に表示する最も効率的な方法は何ですか? コードを表示するか、利用可能な API/仕様があれば教えてください。
答え
時間の都合上、単純なソケットを使用してデータを RGB で送信することにしました。Java クライアントが同じマシンで実行されている場合、パフォーマンスを大幅に向上させることができました。クライアントがリモートで実行されている場合でも、ネットワーク経由で JPEG を送信しています。次に、最適化された JPEG デコーダーを見つける必要があります。
ところで、これは 2 つのクライアントではなく、CameraStream ウィジェットが両方のタイプを読み取って解析するだけです。