最初に書いてしまうと、 ubuntuのsleep()は非同期シグナルセーフ関数で、実行中にシグナルを受信すると、ただちにシグナルハンドラへ処理が移り、シグナルハンドラが完了したあとで、指定秒数が経過していなくても、再開することなくただちに完了する。 ubuntuのread()とwrite()は非同期シグナル関数で、実行中にシグナルを受信すると、実行が完了してからシグナルハンドラへ処理が移り、シグナルハンドラが完了したあとは、read/writeの完了後から処理が再開する。つまりI/Oはシグナルを受信しなかったときと同じように実行される。 みたいだった。 非同期シグナルセーフ関数は他にもたくさんあるけど、今回はこれだけ。 pythonのsignalモジュールとmultiprocessingモジュールを試してるとき、どうも引っかかった。 子プロセスがtime.sleep(100)を実行して、t