古い方法 "シグナル"と新しい方法 "sigaction":SIG_KILLはプログラムで安全に処理できますか?これに異なるLinuxカーネルバージョンの違いはありますか?私は2.6.30からより高いバージョンにアップグレードしようとしていました。開発の観点から知るために、このSIG_KILLは安全に処理できますか?LinuxシグナルSIG_KILLをプロセスsighandlerで処理できますか?
1
A
答えて
1
いいえ、Matteo Piano氏は、シグナルハンドラを使ってSIGKILLを処理することはできないと指摘しています。バグのあるバージョンやそれ以外の非標準のバージョンについて話している場合を除き、異なるカーネルバージョン間で違いはありません。 man 7 signalの "標準信号" セクションから
:
信号SIGKILLとSIGSTOPは、キャッチ遮断、または無視することができません。
Linuxカーネルソースをダウンロードして好きなように変更するだけでも十分です。しかし、私はSIGKILLを捕まえることを推奨していないと思います。もしそうであれば、私はそれを「安全」と呼んでいません。プロセスを停止させるためにハードウェアのリセットを行う必要がなくなります。
あなたはSIGKILLをキャッチしたいと思いますなぜあなたは代わりにSIGHUP
、SIGINT
またはSIGQUIT
のような他の信号を使用して検討する必要があり 、あなたの質問に指定されていないとして。これらの他のシグナルは、おそらく処理されるためのものであり、Unix/Linuxプログラムの中にはそのようなものがあります。
また、(SIGKILLを捕まえて)、ターゲットプロセスが終了したかどうかを検出するためにプロセスを休止させることも考えられます。たとえば、親プロセスは、子プロセスからのSIGCHLD
シグナルを探して、シグナルハンドラでやりたいと思ったのと同じイベントを発生させることができます。
関連する問題
- 1. Linux - プロセス処理の終了
- 2. Linuxでの複数スレッドによるシグナル処理
- 3. SIGCHLDシグナル処理
- 4. 子プロセスのパイプライン処理は、親プロセスへのシグナルでどのように動作しますか?
- 5. MPIシグナルの処理
- 6. 次のシグナル処理の動作をPythonで説明できますか?
- 7. LinuxでC++でプロセスを管理する
- 8. ここで、Linuxシグナルはカーネル内部で送信または処理されますか?
- 9. 画像処理でのプロセスクラッシュ(シグナル11)
- 10. AndroidでのUnixシグナルの処理
- 11. C言語でシグナルを処理するときの呼び出しプロセスのpidが正しくない
- 12. シグナルの処理中に同じシグナルをブロックする方法は?
- 13. Linuxでの並列処理
- 14. pythonはどのようにシグナルを処理しますか?
- 15. NodeJSで長期実行プロセスを処理しますか?
- 16. perlの別のプロセスにシグナルを送信できません
- 17. 子プロセスでSIGINTシグナルを無視する
- 18. 子プロセスはいくつの接続を処理できますか?
- 19. 複数のプロセスの処理の処理
- 20. cgiのプロセス処理
- 21. GDBの下位プロセスをシグナルなしで停止しますか?
- 22. Linuxの親プロセスから子プロセスを管理するBlueprint?
- 23. プロセスが終了した後、Linuxカーネルはどこで処理を行い、TCP接続をクリーンアップしますか?
- 24. PythonでシグナルとKeyboardInterruptはどのように処理されますか?
- 25. POSIXタイマーとPOSIXシグナルの処理
- 26. シグナル処理のためのPythonパッケージ
- 27. SIGABRTシグナルの処理方法は?
- 28. Pythonの多重処理です。プロセスの結合を終了できません。
- 29. Linuxで\ resumeシグナルを一時停止していますか?
- 30. デーモンのSIGHUPシグナルの余波を処理するためにPython例外を使用できますか?
'man'から:_ SIGKILLまたはSIGSTOPをブロックすることはできません。そうしようとする試みは黙って無視されます。 –