« ロッテ優勝 | Main | D200リーク情報? »

October 27, 2005

SIGSTOPのトラップ?

あれこれ実装すると楽しい気分になれるが、ふと気づくと結局自分のやっていることは既存コードのコピペとちょっとした改変でしかない気がしてきて鬱になる。まあ、どこに何をコピペすればよいか知っている、ということも重要なことではあるのだけれど(コンピュータジョーク - 「エンジニアを理解しよう -- その4」を参照)。

ところで最近取り組んでいるのはシグナル。SIGSTOPについて調べていたら、

SIGTSTP, SIGTTIN, SIGTTOU, SIGSTOPに対応するシグナルハンドラ 登録があれば、そのハンドラの起動を行う
書いてあったので、マジかと思ってあれこれ調べてしまった。多分SIGSTOPは誤りで、SIGSTOPに対しては(SIGKILLも)ブロックもハンドラの設定もできない、というのが正しいと思う(manpage of sigaction(2)にもそうある)。
SIGSTOP は、それを受けるプロセスはトラップできないし、無視することもできない。(SIGSTOP問題)
SIGCONTにはハンドラを設定できるので、SIGCONTで端末の設定を戻したりすることはできるらしい。この辺の処理は、kernel 2.6.13だとlinux/kernel/signal.cのget_signal_to_deliver()あたり。

|

« ロッテ優勝 | Main | D200リーク情報? »

Comments

C-c が効かないのなら C-z -> kill -KILL なわけですな

Posted by: もわ | October 27, 2005 at 07:38 AM

C-cが効かないプロセスなんて…と思ったけどよく考えるとC-cはSIGKILLじゃなくてSIGINTでした。

Posted by: fujita.h | October 27, 2005 at 01:36 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/39126/6649584

Listed below are links to weblogs that reference SIGSTOPのトラップ?:

« ロッテ優勝 | Main | D200リーク情報? »