なひです.

> From: 中村 暁史 [mailto:anakamur / exa.i-tech.co.jp]
> Sent: Wednesday, March 17, 1999 9:26 PM

> ->Rubyでなにか関連ツールを作ってやろうと画策中です...順序が逆だ.
> 
> Ruby-Mgl全然進ませる暇が(頭は別途討議)ないっす(T_T)

ないっす(T_T)

VisualTestとかいうWindows用自動テストツールのβテスタを
やってたんですが,
「これがRuby scriptでコントロールできたらなぁ」とか思ってみたり.
夢を語る暇があったら書きなさい > をれ

> ->ただいずれにしても,スレッドが複数あったときに,
> ->誰がsignalを受けるかわからないという問題もありそうです.
> 
> それ用の新たなスレッド(のオブジェクト?)が生成される、ってのは
> 馬鹿げた発想なんでしょうか?(^^;

別スレッドに制御が飛んでしまうと,
やりたかった「リカバリ処理」がどれ(どのスレッドのもの)なのか
わからなくなりそう.^^;
「リカバリはせず,他のスレッドがお亡くなりになるのを待って,
最後に後始末処理をして,幕を下ろす」
なんて処理には,新スレッド生成が合いそうですね.

	/	/	/

> From: Yukihiro Matsumoto [mailto:matz / ev.netlab.co.jp]
> Sent: Thursday, March 18, 1999 12:30 AM

> |そうですね...こうなったら,(補足可能な)すべてのsignalは,
> |Ruby本体が捕まえて,例外にしてしまうとか...
> |そうすれば,ユーザがsignalを気にする必要がなくなる...
> |いや冗談です.^^;
> 
> まじでプロセスを中断させるシグナルはぜんぶ捕捉しようかなと考
> えてます.

おおお...(^-^)

> |ただいずれにしても,スレッドが複数あったときに,
> |誰がsignalを受けるかわからないという問題もありそうです.
> |そのスレッドのensureは実行されて...
> |他スレッド(main thread含む)のensureは? うーん.
> 
> main threadに送れば,捕捉されなければプログラムが終了します
> し,main threadが終了するときには,他のthreadは(ensureを実行
> しつつ)終了しますから,あんまり問題ないように思います.

終了したくない場合はどうしましょう.
例えばコトの発端のSIGPIPEは,
「write system callの実行中に飛んできたSIGPIPEは,
そのwriteを実行したブロックで捕まえて,リカバリして,
処理を続行」
なんてしたいですよね.
この場合,main threadにSIGPIPEが飛んでしまうとリカバリできない...

こういう,

	このブロックで飛んでくるはずなので,
	このブロック(を実行するスレッド)で捕まえたい.
	そしてできるならリカバーしたい(例: PIPE, SEGV)

やつと,

	いつ飛んでくるかわからん(例: HUP, KILL, ALRM)

やつが居るのが困りものですね...

# SEGVが飛んでくることが明らかな外部ライブラリなんて,
# 使わないに越したことないですが.^^;

難癖つけるばかりで解決策がなくてすいません.
一応なひの今のところのお勧めは,まだ,「従来のままほっとく」です.^^;
daemon書くならsignalを捕まえよう.