From: Ryo HAYASAKA Date: 2002-04-13T03:41:04+09:00 Subject: [ruby-dev:16894] compile failure in process.c, setpgrp() & setpgid() 早坂@北陸先端です. NetBSD でコンパイルが process.c のところで止まってしまいます. $ gmake ... gcc -g -O2 -pipe -I. -I. -c process.c process.c: In function `proc_setpgrp': process.c:1018: too few arguments to function `setpgrp' gmake: *** [process.o] Error 1 man setpgrp を見ると SYNOPSIS int setpgid(pid_t pid, pid_t pgrp); int setpgrp(pid_t pid, pid_t pgrp); COMPATIBILITY setpgrp() is identical to setpgid(), and is retained for calling conven- tion compatibility with historical versions of BSD. と書いてあります. また, process.c の 1082 行目のコメントにはこうあります. In Linux, `int setpgrp(void)' is equivalent to setpgid(0, 0) なので, Index: process.c =================================================================== RCS file: /src/ruby/process.c,v retrieving revision 1.51 diff -d -p -u -r1.51 process.c --- process.c 2002/03/22 07:26:35 1.51 +++ process.c 2002/04/12 18:37:34 @@ -1014,11 +1014,11 @@ proc_getpgrp() static VALUE proc_setpgrp() { -#if defined(HAVE_SETPGRP) && defined(SETPGRP_VOID) - if (setpgrp() < 0) rb_sys_fail(0); -#else # ifdef HAVE_SETPGID if (setpgid(0, 0) < 0) rb_sys_fail(0); +#else +#if defined(HAVE_SETPGRP) && defined(SETPGRP_VOID) + if (setpgrp() < 0) rb_sys_fail(0); # else rb_notimplement(); # endif のように setpgrp() と setpgid(0, 0) の順番を入れ換えてみてはいかがでしょ うか? NetBSD と Linux ではうまくコンパイルできることを確認しています. # 他の OS ではどうか分かりません. -- HAYASAKA, Ryo (早坂 良) http://www.jaist.ac.jp/%7Eryoh/ Japan Advanced Institute of Science and Technology (JAIST)