[#30549] [ANN] Ruby 1.8.6 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 をリリースしました。

14 messages 2007/03/12

[#30553] help: lib/shell for ruby 1.9 — keiju@... (Keiju ISHITSUKA)

けいじゅ@いしつかです.

13 messages 2007/03/13
[#30585] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[#30587] Re: help: lib/shell for ruby 1.9 — keiju@... (石塚圭樹) 2007/03/15

けいじゅ@いしつかです.

[#30588] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[ruby-dev:30611] Re: [BUG] waitpid for ruby-trunk

From: keiju@... (石塚圭樹)
Date: 2007-03-17 03:53:55 UTC
List: ruby-dev #30611
けいじゅ@いしつかです.

In [ruby-dev:30610] the message: "[ruby-dev:30610] Re: [BUG] waitpid
for ruby-trunk", on Mar/17 12:16(JST) "KUBO Takehiro" writes:

>久保です。

>Linux kernel 2.6 でも、環境変数 LD_ASSUME_KERNEL=2.4.19
>を設定して、LinuxThreads を使用させるようにしたら、再現しました。

>以下の LinuxTheads の制限にひっかかっているのでしょう。
>  http://www.linux.or.jp/JM/html/LDP_man-pages/man7/pthreads.7.html
>> あるスレッドが fork(2) を使って新しい子プロセスを作成した場合、
>> どのスレッドでもこの子プロセスを wait(2) できるべきである。し
>> かしながら、この実装では子プロセスを作成したスレッドだけがこ
>> の子プロセスを wait(2) できる。

なるほど... なかなか奥が深いですね...

下記スクリプトにしたら Process::wiaitpid が正常に動作しました.
shell.rb の方も同様にしたら動作するようになったようです.

ありがとうございました.

--
Thread.start{
  p1 = fork{exec "sleep", "1"}
  begin
    puts "wait p#1"
    _pid = Process.waitpid(p1, nil)
    puts "end p#1"
  rescue
    p $!
  end
}

Thread.start{
  p2 = fork{exec "sleep", "1"}
  begin
    puts "wait p#2"
    _pid = Process.waitpid(p2, nil)
    puts "end p#2"
  rescue
    p $!
  end
}

sleep 20


__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---

In This Thread

Prev Next