IPC 【Inter-Process Communication】 プロセス間通信
概要
IPC(Inter-Process Communication)とは、コンピュータ上で実行中のプログラムの間でデータをやり取りするための仕組み。あるプログラムから別のプログラムへデータやメッセージを通知したり、データの提供依頼や処理依頼を行ったり、依頼に対する結果を返したりすることができる。プログラムからIPCを通じて外部のプログラムと連携することで、オペレーティングシステム(OS)のカーネルや常駐プログラムが提供する機能を利用したり、様々な機能や特徴を持つプログラムを連携させて全体として一つのシステムを構築することができる。
単にIPCという場合は同じコンピュータ上で動作している複数のプログラム間で通信する技術を指すことが多いが、広義には異なるコンピュータで動作しているプログラム間でネットワークを介して通信する技術も含まれる。
IPCには様々な方式があり、性能や機能、制約などに違いがある。OSやプログラミング言語によって利用できるものが異なる。最も単純な方法としては、ストレージ(外部記憶装置)上の特定のファイルを介してデータをやり取りしたり、メインメモリ上の特定の領域を共有領域としてデータの受け渡しする手法がある。
多くのOSや処理系で利用できる方式には、シグナルやソケット(UNIXドメインソケット/ネットワークソケット)、パイプ(匿名パイプ)、名前付きパイプ(named pipe)、セマフォ、メッセージキューイングなどがある。
WindowsのDDEやOLE、COM/DCOM、WCF、AndroidのBinder、JavaのRMI(Romote Method Invocation)など、特定のシステムや環境でのみ利用可能な技術も多くある。また、別のプログラムへの処理依頼や関数・メソッド呼び出しなどを行うRPC(Remote Procedure Call)などの技術をIPCの一種とすることもある。
(2023.8.24更新)