古い方法 "シグナル"と新しい方法 "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. 子プロセスのパイプライン処理は、親プロセスへのシグナルでどのように動作しますか?
- 6. MPIシグナルの処理
- 7. 次のシグナル処理の動作をPythonで説明できますか?
- 8. LinuxでC++でプロセスを管理する
- 9. ここで、Linuxシグナルはカーネル内部で送信または処理されますか?
- 10. 画像処理でのプロセスクラッシュ(シグナル11)
- 11. sleep pythonループでのシグナル処理2.7
- 12. AndroidでのUnixシグナルの処理
- 13. JavaでSIGTERMシグナルをうまく処理するには?
- 14. C言語でシグナルを処理するときの呼び出しプロセスのpidが正しくない
- 15. プロセスがwaitpidで待機しているときにシグナルを処理する方法は?
- 16. Java LWPを軽く処理する方法(軽量プロセス)Linux
- 17. シグナルをエラーとして処理する
- 18. シグナルの処理中に同じシグナルをブロックする方法は?
- 19. Linuxでの並列処理
- 20. pythonはどのようにシグナルを処理しますか?
- 21. NodeJSで長期実行プロセスを処理しますか?
- 22. プロセスはLinuxで独自のページテーブルエントリを変更できますか?
- 23. Javaでのプロセスの理解[Linux]
- 24. 子プロセスでSIGINTシグナルを無視する
- 25. perlの別のプロセスにシグナルを送信できません
- 26. 子プロセスはいくつの接続を処理できますか?
- 27. 複数のプロセスの処理の処理
- 28. GDBの下位プロセスをシグナルなしで停止しますか?
- 29. Linuxの親プロセスから子プロセスを管理するBlueprint?
- 30. cgiのプロセス処理
'man'から:_ SIGKILLまたはSIGSTOPをブロックすることはできません。そうしようとする試みは黙って無視されます。 –