久保田です。

From: nobu.nakada / nifty.ne.jp
Subject: [ruby-list:36844] Re: ruby 1.8.0 (server lock?)
Date: Thu, 26 Dec 2002 20:48:47 +0900

> なかだです。

どうも、回答ありがとうございます。

> 1.7以降では、forkしたスレッド以外はその時点で終了します。

この文章の意味が理解できなかったのですが、一応いろいろ実験し
て以下のようなことだろうと解釈しました。

プロセスとスレッドの言葉の意味は、とりあえず、forkした場合に
できるのはプロセス、Thread.startの場合はスレッドだと思ってい
ます。

プロセスの一番上になる親スレッドが終了した場合、そのプロセス
に属するスレッドはすべてその時点で終了する。

> プロセ
> スをバックグラウンドで走らせたいなら、先に fork && exit する必
> 要があります。

プログラムを下記のように変更して、無事動きました。exitはruby
のコマンドかと思ったのですが、普通のプロセスの終了のことなん
ですな。

require "socket"

fork {
  Thread.start do
    gsock = TCPServer.open(8080)
    socket = gsock.accept
    socket.puts("Hello, world")
    socket.close()
  end
  sleep
}

それでは。

----------------------------------------------
久保田俊也 E-mail:em6t-kbt / asahi-net.or.jp
           http://www.asahi-net.or.jp/~em6t-kbt/