From: Kikutani Makoto Date: 1997-09-18T17:03:33+09:00 Subject: [ruby-list:4409] Re: socket きくたにです。 Thu, Sep 18, 1997 at 11:06:38AM +0900 において Yukihiro Matsumoto さん曰く: > UNIXソケットっていうかsocketpairですね.この場合,pipeを使っ > たり,open()を使ったりする方がお手軽かつ簡単でよろしいと思い > ます. > > f = open("|./ipc0.rb", "r+") > i = 0x12345678; > f.write([i].pack("i")) > f.write("ruby") > > とかどうでしょう.ipc.rbでは標準入出力で受ける事になります. --------------- 親 --------------- #!/usr/bin/ruby f = open("|./ipc1.rb", "r+") i = 0x12345678; f.write([i].pack("i")) #print f.read(2), "\n" f.write("ruby") #print f.read(2), "\n" --------------- 子 --------------- #!/usr/bin/ruby i = $stdin.read(4) i.each_byte {|byte| printf "ipc1.rb: int byte = %x\n", byte } #$stdout.write("OK") s = $stdin.read(4) #$stdout.write("OK") printf "ipc1.rb: str = %c\n", s でやってみましたが、 % ./ipc-test1.rb % で何も表示されませんでした。 やりたいことはVerilogシミュレータから、複数個の波形ビューワの (tkの)ウィンドウを開くのですが(つまり子がたくさんいる)、 その場合でも上の方法で大丈夫ですね? あと、上でコメントになっているような、ハンドシェイクをするのは できるのでしょうか? -- 人生を背負い投げ 菊谷 誠(Kikutani Makoto) kikutani@eis.or.jp kikutani@jdc.ericsson.se hgf03701@niftyserve.or.jp http://www.eis.or.jp/muse/kikutani/