From: kjana@... (YANAGAWA Kazuhisa) Date: 2000-06-12T21:37:53+09:00 Subject: [ruby-list:23167] Re: description on fork and Process.fork そもそも望ましいインタフェースっていうのがどうであるかっていうのが問題 で.... 「daemon になるためにセッションリーダーになって制御端末を捨てる」 っていう機能をつくって,これに名前をつけるっていう線から,現状の OS の インタフェースをそのままみせるっていう線までの間のどこをとろうかってい う話ではあるんですけど. # それこそ Process.setpgrp は BSD 系では引数を二つとるし,SystemV 系で # は引数無しになってるけど,これは統一するべきなのか,なんていう話まで. In message <200006111621.e5BGLg011484@edge.sky.yamashina.kyoto.jp> taca@sky.yamashina.kyoto.jp writes: > > ところで、setsid() って以下でよい? > > # これは、UNIX Magazine 1996.4 で習いました(古い) > setpgrp()の引数が異なるシステムがあったと記憶しています。 っていうか,SystemV で setpgrp() を引数無し,セッションリーダーになっ て制御端末を放棄する関数,と規定した際に従来の BSD 系 setpgrp() 相当の 機能へのインタフェースとして規定されたのが setpgid() というようにおも えます. # 思うだけで,検証はしてない. で,SystemV 系で制御端末を捨てる,という事だけを行う canonical なイン タフェースって,どうなるんでしょう.tty に対する ioctl で TIOCNOTTY を 発行するっていうのは BSD compat の意味だけのような気がするんですけど. setpgrp() しかないのかな? もちろん BSD compat だろうが何だろうが,役に たつものは使うのです,っていう考え方も有りでしょうけど. # BSD 系では setpgrp(0, 0) して ioctl,SystemV 系では単に setpgrp().っ # ていうのをどこかで読んだ. そもそも setsid() がないシステムなんて,今ごろそんなにはない,っていう 話はあるかも.POSIX compliant ならなければいけないし. むしろ Win32 環境での方が問題かも.でもあれにそもそも制御端末だのセッ ションだのがあるのかは謎.プロセスグループの概念ぐらいはありそうだけど. # そだ,Process.fork の定義は #if !defined(NT)...#endif でくくってある # のに fork の定義はそうなってないのはなんでだろう,っていうのもあった # んだった. -- 柳川和久 @ 東大阪市 . 大阪府 June 12, 2000 「なんで一本道で迷うことがある?」「人間やればなんだってできるんだ!!」