永井@知能.九工大です.

From: KUBO Takehiro <kubo / jiubao.org>
Subject: [ruby-list:46240] Re: ruby1.8→1.9でprocess/thread関連でハマった話
Date: Wed, 29 Jul 2009 22:56:06 +0900
Message-ID: <5d847bcd0907290648p2c1c447dkee773d4c002b9d19 / mail.gmail.com>
> 問題の起こる条件について、補足。

補足をありがとうございます.
確かに glibc の情報を示すのが正しい情報提供のやり方でした.
手元の環境は glibc-2.3.3 ですので,

>   glibc 2.3.2以降、glibc 2.4より前
>     --> カーネルのバージョンと設定によって、NPTL だったり、LinuxThreads だったり。
>           getconf GNU_LIBPTHREAD_VERSION
>         を実行して NPTL, LinuxThreads のどちらなのか確認するのが早道でしょう。

に相当しますね.

まぁ,そういう問題が起こりうることさえ知っていれば,
いずれの場合でも動くようなスクリプトにすることは簡単でしょうから,
問題が生じる環境かを神経質に判定しなくてもいいのは救いです.(^_^)

# 例えば,簡単には
# -------------------------------------------------------------------
# pid = nil
# Thread.new{ pid = fork{...}; Process.waitpid(pid); ...後処理... }
# ... Process.kill(:KILL, pid)
# -------------------------------------------------------------------
# などとすればいいわけで.
-- 
永井 秀利  (nagai / ai.kyutech.ac.jp)
九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門