Linux と Windows で動作する IPC を処理する C++ プログラムを作成する方法はありますか? オペレーティング システムに依存せずに実行している C++ ライブラリはありますか?
2 に答える
「メッセージ」が IPC (InterProcess Communication) を意味する場合、いいえ、OS の関与なしには不可能であり、それを行う方法はおそらく宇宙で見つけることができるすべての OS で異なるでしょう。「メッセージ」とは、アプリケーション内でデータを渡す方法を意味する場合、はい、OS の関与なしで実行できますし、実行する必要があります。
IPC の場合、メッセージを渡すだけであれば使用できるBoost.IPCが常にあります。もちろん、UI イベントの取得なども必要な場合は、それだけでは不十分です。Qtは、C++ で一般的に使用されるポータブル GUI ツールキットの 1 つです (きれいというわけではありませんが、機能します)。
ソケット(別名TCP/IPまたはUDP/IP)について話している場合は、ソケットライブラリを使用できます。注意すれば、WindowsとUnixの両方のバリアントで同じコードを機能させることができます。ただし、クロスプラットフォームソケットAPIの非同期機能は非常に限られています(select
呼び出しとそれに関連するスケーラビリティの問題)。
libeventを使用することもできます。これはクロスプラットフォームであり、はるかに豊富な非同期セマンティクスを備えています。
名前付きパイプやFIFOのようなもののために...私はそのようなもののための良いクロスプラットフォームライブラリを知りません。