fprintf(stderr)
をglibc/linuxのシグナル(SIGALRM)ハンドラに使用できますか?linux/glibc。シグナルハンドラでfprintfを使用できますか?
2
A
答えて
6
できません。 async-signal-safe関数のリストについては、マンページsignal(7)を参照してください。 fprintf
はそのリストに含まれていません。
フォーマットする必要がない場合は、write(STDERR_FILENO, <buf>, <buflen>)
を使用してstderrに書き込むことができます。
4
これは安全ではありません、引用IBM developerWorksの記事を、約Signal Handling Safety
シグナルハンドラはfprintfのでメッセージを出力し、プログラムが同じストリームを使ってfprintfの呼び出しの真ん中にあったと仮定信号が配信されたとき。両方の呼び出しが同じデータ構造(ストリーム自体)で動作するため、シグナルハンドラのメッセージとプログラムのデータの両方が壊れている可能性があります。
関連する問題
- 1. シグナルハンドラでSIGRTMINとSIGRTMAXを安全に使用できますか?
- 2. ブーストユニットテスト用のシグナルハンドラをインストールすることはできますか?
- 3. Windowsカーネルデバイスドライバでfprintfを使用する
- 4. シグナルハンドラ内でロングデータを使用する。
- 5. シグナルハンドラのリターンポイントを変更することはできますか?
- 6. fprintfはどのようにLinuxでブロックできますか?
- 7. sigaction(C++)を使用したLinuxのシグナルハンドラ
- 8. fprintfで使用するUARTから複数のストリームを定義する方法
- 9. Cプログラムはfprintfで1行だけを書き込みます
- 10. ==> fprintf(Matlabで)を使用しているエラー
- 11. fprintfはデバイスをクラッシュさせますがシミュレータは使用しませんか?
- 12. fprintfコマンドの1行はスレッドセーフですか?
- 13. fprintfがファイルに書き込まない
- 14. ubuntuでfprintf()が動作しません
- 15. UEFIのfprintfの使い方
- 16. シグナルハンドラ関数でローカルミューテックスを使用して共有データを同期する
- 17. シグナルハンドラはどこに戻りますか?
- 18. Cメインプロセス用のLinuxシグナルハンドラ
- 19. メインスレッドのみがPythonでシグナルハンドラを設定できる理由
- 20. シグナルハンドラでスレッドを作成する
- 21. テストでdjangoシグナルハンドラを接続する
- 22. Cで\\を印刷するには? (fprintf)
- 23. シグナルハンドラ内でメモリを解放する
- 24. gdbでシグナルハンドラを使ってCプログラムをデバッグする方法は?
- 25. fprintfがMatlabでコンマを引き起こす
- 26. fprintfはC++でどのように動作しますか?
- 27. シグナルハンドラを使用する正しい方法
- 28. pause()シグナルハンドラ
- 29. スラッシュスラッシュコマンドで@を使用できますか?
- 30. シグナルハンドラを使用してfifoから受け取ったデータを処理する
libcの関数リストまたはカーネルのシステムコールリストですか? – osgx
http://linux.die.net/man/7/signalリストはありません。私にリンクを教えてもらえますか? – osgx
@osgx:リンクが追加されました。 posix関数のリストで、libcの標準も含まれています。しかし、libc標準では、libc関数(signal()を除く)は再入可能である必要はないため、シグナルハンドラ内でlibc関数を(移植可能に)使用することはできません。 – Fabian