From: Shoichi OZAWA Date: 1997-09-17T18:01:14+09:00 Subject: [ruby-list:4373] Re: socket こんにちは 小澤@日立 です。 From: Kikutani Makoto Subject: [ruby-list:4366] socket Date: Wed, 17 Sep 97 14:32:30 +0900 > きくたにです。 > > Unixソケットを使ったrubyスクリプトを書きたいのですが、 > 今下のようなプログラムから起動してます。 > コンパイルするのがめんどうになってきたので、こっちもrubyで > 書きたいのですが、どうすればいいでしょう。 > manual読んでもわからなかったもので。 休憩時間にちょっと考えてみました。ソケットはよく知らない のですが、そのまま ruby になおしてみました。こんなんでどうでしょう? #!/usr/local/bin/ruby require "socket" channel = Socket.socketpair(Socket::AF_UNIX, Socket::SOCK_STREAM, 0) pid = fork if pid == nil then # child process cmd = "./ipc0.rb" arg0 = "./ipc0.rb" arg1 = format("%d", channel[0]) exec("#{cmd} #{arg0} #{arg1}") fail "exec faild" end # parent process channel[0].close i = ["12345678".hex].pack("i") if ((l = channel[1].write(i)) != i.length) then print "int write faild. written length = #{l}\n" end str = "ruby" if ((l = channel[1].write(str)) != str.length) then print "str write faild. written length = #{l}\n" end でも、ipc0.rb はどうやって反対側のソケットを使うのでしょうか? # ソケット知らないのがバレバレ。 ではでは。 -- 小澤 彰一 Keep it simple, stupid. mailto:ozawa@omika.hitachi.co.jp