From: Kikutani Makoto Date: 1997-09-17T14:32:30+09:00 Subject: [ruby-list:4366] socket きくたにです。 Unixソケットを使ったrubyスクリプトを書きたいのですが、 今下のようなプログラムから起動してます。 コンパイルするのがめんどうになってきたので、こっちもrubyで 書きたいのですが、どうすればいいでしょう。 manual読んでもわからなかったもので。 #include #include #include #include main() { int pid, i, slen, l; char *cmd, *arg0, arg1[8], *str; int channel[2]; /* IPC channel with child process */ 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 */ cmd = "./ipc0.rb"; arg0 = "ipc0.rb"; 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("int write failed. written length = %d\n", l); str = "ruby"; slen = strlen(str)+1; /* include NULL char */ if ((l = write( channel[1], str, slen)) != slen) printf("str write failed. written length = %d\n", l); } -- 人生を背負い投げ 菊谷 誠(Kikutani Makoto) kikutani@eis.or.jp kikutani@jdc.ericsson.se hgf03701@niftyserve.or.jp http://www.eis.or.jp/muse/kikutani/