RubyのFork + Socketを利用したプロセス間通信 その1
どうも、kazunyaaanです。
今回は双方向の通信ができるUnixSocketを使ってみます。
インターネットドメインソケットと類似してますが、ネットワークプロトコルは使用していない等のため、
高速な通信を可能としています。(たぶん...後々確認予定...)
初めは、UnixSocketを使った基礎的なプログラムから。
今回はUNIXSocket.pair(Socket::SOCK_DGRAM)
とし、コネクションレス型通信(データグラム)を扱います。
以下、実行結果。
$ ruby Test_unixsocket.rb [P] I am parent processe. [C] I am child processe. [P] C -> P : 0 [P] C -> P : 1 [P] C -> P : 2 [P] C -> P : 3 [P] C -> P : 4 [C] P -> C : 0 [P] C -> P : 5 [C] P -> C : 1 [P] C -> P : 6 [P] C -> P : 7 [P] C -> P : 8 [C] P -> C : 2 [P] C -> P : 9 [C] P -> C : 3 [C] P -> C : 4 [C] P -> C : 5 [C] P -> C : 6 [C] P -> C : 7 [C] P -> C : 8 [C] P -> C : 9
こんな感じですかね。やっぱり、Rubyで組むと楽ですね。
多プロセスの場合、やっぱり、unixsocketを共有しちゃうと駄目なのかな...?