[#4060] ruby-tk on Windows — Eiji-usagi-MATSUmoto <ematsu@...>

うさぎです。

70 messages 1997/09/03
[#4061] Re: ruby-tk on Windows — matz@... (Yukihiro Matsumoto) 1997/09/03

まつもと ゆきひろです

[#4064] Re: ruby-tk on Windows — Masaki Suketa <suke@...> 1997/09/03

>まつもと ゆきひろです

[#4071] Re: ruby-tk on Windows — KIMURA Koichi <kkimura@...> 1997/09/03

[#4075] Re: ruby-tk on Windows — Masaki Suketa <suke@...> 1997/09/03

助田です

[#4089] Re: ruby-tk on Windows — Masaki Suketa <suke@...> 1997/09/04

助田です

[#4165] Re: ruby-tk on Windows — Masaki Suketa <suke@...> 1997/09/08

助田です

[#4168] Re: ruby-tk on Windows — KIMURA Koichi <kkimura@...> 1997/09/08

[#4169] Re: ruby-tk on Windows — Shin-ichiro HARA <sinara@...> 1997/09/08

原です。

[#4170] Re: ruby-tk on Windows — matz@... (Yukihiro Matsumoto) 1997/09/08

まつもと ゆきひろです

[#4172] Re: ruby-tk on Windows — WATANABE Hirofumi <watanabe@...> 1997/09/08

わたなべです.

[#4174] Re: ruby-tk on Windows — matz@... (Yukihiro Matsumoto) 1997/09/08

まつもと ゆきひろです

[#4187] Re: ruby-tk on Windows — KIMURA Koichi <kkimura@...> 1997/09/08

[#4188] Re: ruby-tk on Windows — matz@... (Yukihiro Matsumoto) 1997/09/08

まつもと ゆきひろです

[#4190] Re: ruby-tk on Windows — sakamoto@... (Sadayuki Sakamoto) 1997/09/08

酒本です。

[#4083] ruby 1.0-970903 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

14 messages 1997/09/03

[#4278] Is there any english documentation ? [FreeBSD ports] — Eiji-usagi-MATSUmoto <ematsu@...>

うさぎです。

11 messages 1997/09/11

[#4313] mail address class — akira yamada / やまだあきら <akira@...>

36 messages 1997/09/15
[#4406] Re: mail address class — akira yamada <akira@...> 1997/09/18

[#4408] Re: mail address class — keiju@... (石塚圭樹 ) 1997/09/18

けいじゅ@日本ラショナルソフトウェアです.

[#4506] Re: mail address class — akira yamada / やまだあきら <akira@...> 1997/09/22

[#4637] Re: mail address class — keiju@... (石塚圭樹 ) 1997/09/25

けいじゅ@日本ラショナルソフトウェアです.

[#5042] Re: mail address class — akira yamada / やまだあきら <akira@...> 1997/10/17

[#5043] Re: mail address class — shugo@... (Shugo Maeda) 1997/10/18

前田です。

[#5044] Re: mail address class — akira yamada / やまだあきら <akira@...> 1997/10/18

[#5047] Re: mail address class — shugo@... (Shugo Maeda) 1997/10/18

前田です。

[#5053] Re: mail address class — akira yamada / やまだあきら <akira@...> 1997/10/19

[#5067] Re: mail address class — shugo@... (Shugo Maeda) 1997/10/20

前田です。

[#4324] ruby seminar — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

37 messages 1997/09/16
[#4337] Re: ruby seminar — shugo@... (MAEDA Shugo) 1997/09/16

前田です。

[#4339] Re: ruby seminar — matz@... (Yukihiro Matsumoto) 1997/09/16

まつもと ゆきひろです

[#4387] Re: ruby seminar — shugo@... (MAEDA Shugo) 1997/09/18

前田です。

[#4391] Re: ruby seminar — Eiji-usagi-MATSUmoto <ematsu@...> 1997/09/18

うさぎ@勤務地は西田幾太郎生誕の地です。

[#4407] Re: ruby seminar — shugo@... (MAEDA Shugo) 1997/09/18

前田です。

[#4366] socket — Kikutani Makoto <kikutani@...>

きくたにです。

21 messages 1997/09/17
[#4389] Re: socket — matz@... (Yukihiro Matsumoto) 1997/09/18

まつもと ゆきひろです

[#4449] Bug?? (ruby-1.0-970911) — Yuji Shigehiro <sigehiro@...>

ruby-1.0-970701 から, ruby-1.0-970911 にバージョンアップしたところ,

16 messages 1997/09/19

[#4510] python doc — Kikutani Makoto <kikutani@...>

ここで聞くべきことじゃないのですが、きっと知ってる人がいるだろう

34 messages 1997/09/22
[#4555] Re: python doc — Kikutani Makoto <kikutani@...> 1997/09/24

きくたにです。

[#4562] Re: python doc — gotoken@... (GOTO Kentaro) 1997/09/24

きくたにさん>

[#4563] ruby animal (Re: python doc) — matz@... (Yukihiro Matsumoto) 1997/09/24

まつもと ゆきひろです

[#4567] Re: ruby animal (Re: python doc) — gotoken@... (GOTO Kentaro) 1997/09/24

まつもと ゆきひろさん>

[#4577] Re: ruby animal (Re: python doc) — Masaki Suketa <suke@...> 1997/09/24

助田です

[#4556] install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...>

30 messages 1997/09/24
[#4559] Re: install problem of mudule for postgreSQL — Eiji-usagi-MATSUmoto <ematsu@...> 1997/09/24

うさぎです。

[#4574] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/24

[#4580] Re: install problem of mudule for postgreSQL — Eiji-usagi-MATSUmoto <ematsu@...> 1997/09/24

うさぎです。

[#4595] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/24

[#4603] Re: install problem of mudule for postgreSQL — Eiji-usagi-MATSUmoto <ematsu@...> 1997/09/24

うさぎです。

[#4612] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/24

[#4614] Re: install problem of mudule for postgreSQL — matz@... (Yukihiro Matsumoto) 1997/09/24

まつもと ゆきひろです

[#4616] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/24

[#4622] Re: install problem of mudule for postgreSQL — matz@... (Yukihiro Matsumoto) 1997/09/24

まつもと ゆきひろです

[#4632] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/25

[#4738] ruby 1.0-970930 install failed — Yoshiyuki Kusano <kusano@...>

草野@構造計画です.

15 messages 1997/09/30

[#4741] rbc.rb — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

33 messages 1997/09/30
[#4759] Re: rbc.rb — shugo@... (MAEDA Shugo) 1997/10/02

前田です。

[#4773] Re: rbc.rb — keiju@... (石塚圭樹 ) 1997/10/03

けいじゅ@日本ラショナルソフトウェアです.

[#4778] Re: rbc.rb — shugo@... (MAEDA Shugo) 1997/10/03

前田です。

[#4793] Re: rbc.rb — keiju@... (石塚圭樹 ) 1997/10/04

けいじゅ@日本ラショナルソフトウェアです.

[ruby-list:4378] Re: socket

From: Kikutani Makoto <kikutani@...>
Date: 1997-09-17 10:15:25 UTC
List: ruby-list #4378
きくたにです。

Wed, Sep 17, 1997 at 06:01:14PM +0900 において
Shoichi OZAWA さん曰く:

> 休憩時間にちょっと考えてみました。ソケットはよく知らない
> のですが、そのまま ruby になおしてみました。こんなんでどうでしょう?

ありがとうございます。でも、なんだか動かないようです...

> でも、ipc0.rb はどうやって反対側のソケットを使うのでしょうか? 
> # ソケット知らないのがバレバレ。

いやあ、私も全然知らないのですが、参考にしているプログラムを
見てると、子プロセスとして起動されるものは同じチャネルで
入出力両方に使っているようです。

さっきの変更版:
------------------------------------------------------------
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>

main()
{
   int pid, i, slen, l;
   char *cmd, *arg0, arg1[8], *str;
   int channel[2]; /* IPC channel with child process */
   char buf[10];

   if (socketpair(AF_UNIX, SOCK_STREAM, 0, channel) < 0) {
      fprintf(stderr, "socketpair failed\n");
      return;
   }

   if ((pid = vfork()) == -1) {
      return;
   }

   if (pid == 0) {		/* child process */
#if 1
      cmd = "./ipc0";
      arg0 = "ipc0";
#else
      cmd = "./ipc0.rb";
      arg0 = "ipc0.rb";
#endif
      sprintf(arg1, "%d", channel[0]);
      execl(cmd, arg0, arg1, NULL);
      perror("execl failed");
      close( channel[0] );
      _exit( 1 );
   }

   /* parent process */	
   close(channel[0]);


   i = 0x12345678;
   if ((l = write( channel[1], &i, sizeof(int))) != sizeof(int))
     printf("ipc-test0.c: int write failed. written length =  %d\n", l);

   if ((l = read( channel[1], buf, 3)) != 3) /* 状態を読むように変更 */
     printf("ipc-test0.c: int read failed. read length =  %d\n", l);
   printf("buf = %s\n", buf);

   str = "ruby";
   slen = strlen(str)+1;
   if ((l = write( channel[1], str, slen)) != slen)
     printf("ipc-test0.c: str write failed. written length =  %d\n", l);
   if ((l = read( channel[1], buf, 3)) != 3)
     printf("ipc-test0.c: int read failed. read length =  %d\n", l);
   printf("buf = %s\n", buf);

}
------------------------------------------------------------

ipc0.c
------------------------------------------------------------
#include <stdio.h>

main(int argc, char *argv[])
{
   char buf[10];
   int l, i;

   int channel = atoi(argv[1]);

   if ((l = read( channel, buf, 4)) != 4)
     printf("int read failed. read length =  %d\n", l);

   for (i = 0; i < 4; ++i)
     printf("ipc0.c: int byte = %x\n", buf[i]);

   if ((l = write( channel, "OK", 3)) != 3)
     printf("ipc0.c: int write failed. written length =  %d\n", l);

   if ((l = read( channel, buf, 5)) != 5)
     printf("str read failed. read length =  %d\n", l);

   printf("ipc0.c: str = %s\n", buf);

   if ((l = write( channel, "OK", 3)) != 3)
     printf("ipc0.c: str write failed. written length =  %d\n", l);
}
------------------------------------------------------------

で、この上のをrubyで書いて

------------------------------------------------------------
#!/usr/bin/ruby

channel = ARGV.shift
printf "ipc0.rb: channel = %d\n", channel
inport = IO.new(channel, "r")
outport = IO.new(channel, "w")

i = inport.read(4)
  
i.each_byte {|byte|
  printf "ipc0.rb: int byte = %x\n", byte
}

outport.write("OK")

s = inport.read(5)
outport.write("OK")

printf "ipc0.rb: str = %c\n", s
------------------------------------------------------------

なんてするのはダメなようで、ちょっとCでのソケットと挙動が
違うのが小澤さんの例では動かない原因かもしれません。

# Unixプログラミングを知らん者がソケットなんか使うなという説も

-- 
人生を背負い投げ

菊谷 誠(Kikutani Makoto)  kikutani@eis.or.jp kikutani@jdc.ericsson.se
hgf03701@niftyserve.or.jp    http://www.eis.or.jp/muse/kikutani/

In This Thread