シグナルハンドラからprintf()はまずいです

http://d.hatena.ne.jp/XuHuang/20070916/1189924551
トラックバックは余りしないんだけど、気になったので。
もし知っているんだったらすいません。


printf()関数は非同期シグナルセーフでは無いです。
シグナルハンドラからprintf()はまずいと思います。
まあ自分もテスト程度の一時的な場合は使うけど、最終的にはコメントアウトするよ。
*実際はデバッグやテスト程度ではprintf()でのバグは見たことが無いけどね。
*いつも思うんだけど非同期シグナルセーフ関数少なすぎ。


非同期シグナルセーフ関数の一覧は以下にあります。
http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html#tag_02_04_03
MANにもあった
http://linux.die.net/man/2/signal


細かい話は以下でまとめられています。
http://d.hatena.ne.jp/yupo5656/20040712/p2


まじめに考えるんだったらwrite()でstdoutに書けばいいのかな?
printf()だって結局はstdoutにwrite()しているだけだし。


追記
printf()以外の処理も必要だったら、セルフパイプと言う手もありかも