From: KOSAKI Motohiro Date: 2012-06-21T05:35:43+09:00 Subject: [ruby-list:48800] Re: setsid(2) と getsid(2) > 原因はまったくわかりませんが、 > > #include > #include > #include > #include > #include > > main() > { > int err; > > printf("getpid()=%d\n", getpid()); > printf("getpgid()=%d\n", getpgid(0)); > err = setsid(); > printf("%d, %d\n", err, errno); > return 0; > } > > というCプログラムが > > getpid()=2319 > getpgid()=2319 > -1, 1 > > という結果を返すのでRubyと全然関係ない話なんじゃないですかね ruby でも以下は動いているように見えます ./miniruby -e "Process.fork {Process.setsid }" あと、Linuxのsetsidコマンドは自分がプロセスグループリーダーだったら 自動的に一回forkする機能を持つようです setsid.c ------------------------------------------ if (getpgrp() == getpid()) { switch (fork()) { case -1: err(EXIT_FAILURE, _("fork")); case 0: /* child */ break; default: /* parent */ return 0; } } if (setsid() < 0) /* cannot happen */ err(EXIT_FAILURE, _("setsid failed"));