Actions
Bug #7798
closed子スレッドを実行しているとき Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない
    Bug #7798:
    子スレッドを実行しているとき Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない
  
Description
■ 再現コード
Thread.new{ sleep }
Process.daemon
■ ruby -v の結果
ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux]
■ 実際に起きた結果
プロセスが終了せずに残ります.
kill -TERM では終了できず, kill -KILL する必要があります.
■ 期待した結果
メインスレッドが終了し,プロセスが終了すると期待しました.
■ 解決方法
・rb_f_fork() を参考に,下記のように2回目の rb_fork() 後に rb_thread_atfork() を実行するようにしたところ,期待した動作になりました.
 (期待した動作をしているように思いますが,1回目の rb_fork() の後にするべきなのか,両方でするべきなのかはわかりません.)
*** ruby-1.9.3-p385/process.c	2012-04-15 06:47:27.000000000 +0900
--- ruby-1.9.3-p385_/process.c	2013-02-07 21:21:12.000000000 +0900
*** 4928,4933 ****
--- 4928,4934 ----
default:
_exit(EXIT_SUCCESS);
}
- 
 err = chdir("/");rb_thread_atfork(); if (!nochdir)
        
           Updated by clicube (cube cube) over 12 years ago
          Updated by clicube (cube cube) over 12 years ago
          
          
        
        
      
      タイトルを誤りました.
「子スレッドを実行しているとき Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない」
です.
        
           Updated by znz (Kazuhiro NISHIYAMA) over 12 years ago
          Updated by znz (Kazuhiro NISHIYAMA) over 12 years ago
          
          
        
        
      
      - Subject changed from 子スレッドを Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない to 子スレッドを実行しているとき Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない
        
           Updated by kosaki (Motohiro KOSAKI) over 12 years ago
          Updated by kosaki (Motohiro KOSAKI) over 12 years ago
          
          
        
        
      
      - Status changed from Open to Closed
        
           Updated by kosaki (Motohiro KOSAKI) over 12 years ago
          Updated by kosaki (Motohiro KOSAKI) over 12 years ago
          
          
        
        
      
      Closed because duplicated with #7720.
Actions