読者です 読者をやめる 読者になる 読者になる

続・Windowsがシャットダウンするとき、動作中のrubyプログラムはどうなるのか? あるいはシグナルを他プロセスに投げられるとか甘えだし〜

昨日書いた記事の続編。
Windowsがシャットダウンするとき、動作中のrubyプログラムはどうなるのか? - koki-h's diary

Windowsでシグナルってどんなふうに扱われてるのかな、と思ってググってたら以下の記事を見つけた。

そもそも他プロセスにシグナル投げられるとかそんなの甘えだしー。
あ、他プロセスにシグナル投げられるかどうか、ってのはちょっと補足が必要か。
Unixの世界だとシグナルってOSの機能(っていうのかな)の一部だけど、他の世界では単に規格Cに定められた非同期例外処理である。
そして規格Cでは別のプロセスにシグナルを投げることができるなんて一言も言ってないし、僕らのMSVCRTでももちろん自プロセス内にしかシグナルは投げられない(raise(3)関数を参照せよ)。

http://www.garbagecollect.jp/~usa/d/201305a.html#id20130508_P1_4

衝撃の事実。Windows(というかUnix以外)のプロセスは外部からのシグナルを受け取れない。しかし自分の親プロセスからは受け取れる。
なるほど。コマンドプロンプトでCtrl+Cを押した時だけシグナルが捕捉できたのはそのためか‥。
そして俺の期待は甘えだったということが明らかになった。反省しま〜す。(納得いかない表情で)