From: Koji Arai Date: 2000-06-17T04:55:52+09:00 Subject: [ruby-list:23299] Re: description on fork and Process.fork 新井です。 >>> From: Koji Arai >>> Date: 17 Jun 2000 04:26:00 +0900 >>> Subject: [ruby-list:23298] Re: description on fork and Process.fork > 1.5 へのパッチです。 > > Fri Jun 16 18:41:58 2000 Koji Arai > > * process.c (proc_setsid): BSD-style setpgrp() don't return > process group ID, but 0 or -1. あれっrubyのコードになってませんでした。パッチ出し直します。 (devに移った方がよかったようですね) Index: process.c =================================================================== RCS file: /home/cvs/ruby/process.c,v retrieving revision 1.15 diff -u -p -u -r1.15 process.c --- process.c 2000/06/13 09:42:40 1.15 +++ process.c 2000/06/16 19:49:01 @@ -834,21 +834,26 @@ proc_setsid() if (pid < 0) rb_sys_fail(0); return INT2FIX(pid); #elif defined(HAVE_SETPGRP) && defined(TIOCNOTTY) - pid_t sid; + pid_t pid; + int ret; + rb_secure(2); + pid = getpid(); #if defined(SETPGRP_VOID) - sid = setpgrp(); + ret = setpgrp(); + /* If `pid_t setpgrp(void)' is equivalent to setsid(), + `ret' will be the same value as `pid', and following open() will fail. + In Linux, `int setpgrp(void)' is equivalent to setpgid(0, 0). */ #else - sid = setpgrp(0, getpid()); + ret = setpgrp(0, pid); #endif - if (sid == -1) return -1; + if (ret == -1) rb_sys_fail(0); if ((fd = open("/dev/tty", O_RDWR)) >= 0) { ioctl(fd, TIOCNOTTY, NULL); close(fd); } - return sid; -} + return INT2FIX(pid); #else rb_notimplement(); #endif -- 新井康司 (Koji Arai)