2012年6月21日

[ruby-list:48800] Re: setsid(2) と getsid(2)

> 原因はまったくわかりませんが、
>
> #include <sys/types.h>
> #include <unistd.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <errno.h>
>

> 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"));


投稿者 xml-rpc : 2012年6月21日 05:35
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/111022
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。