Linux 用のシステム モニターを作成しており、いくつかのウォッチドッグ機能を含めたいと考えています。カーネルでは、/dev/watchdog が閉じられていてもウォッチドッグを継続するように構成できます。つまり、デーモンが正常に終了して /dev/watchdog を閉じた場合でも、システムは 59 秒後に再起動します。これは、ユーザーにとって望ましい動作である場合とそうでない場合があります。
SIGINT の処理方法に影響するため、デーモンにこの設定を認識させる必要があります。設定がオンの場合、デーモンは(できれば)終了時に整然としたシャットダウンを開始するか、(少なくとも)システムがまもなく再起動することをユーザーに警告する必要があります。
ユーザー空間からこの設定を取得する方法を知っている人はいますか? 値を取得するための sysconf() には何も表示されません。同様に、最初からソフトウェア ウォッチドッグが有効になっているかどうかを確認できる必要があります。
編集:
Linux は非常に単純なウォッチドッグ インターフェイスを提供します。プロセスは /dev/watchdog を開くことができます。デバイスが開かれると、そのファイルにデータが書き込まれない限り、カーネルは 60 秒のカウントダウンを開始して再起動します。そのファイルにデータが書き込まれると、クロックがリセットされます。
カーネルの構成方法によっては、そのファイルを閉じてもカウントダウンが停止する場合と停止しない場合があります。ドキュメントから:
カーネルが CONFIG_WATCHDOG_NOWAYOUT オプションを有効にしてコンパイルされていない限り、デバイス /dev/watchdog が正しく閉じられていれば、再起動せずにウォッチドッグを停止できます。
CONFIG_WATCHDOG_NOWAYOUT がユーザー空間デーモン内から設定されているかどうかを確認できる必要があるため、そのデーモンのシャットダウンを別の方法で処理できます。言い換えれば、その設定が高い場合、単純な:
# /etc/init.d/mydaemon stop
... /dev/watchdog に何も書き込まれていないため、59 秒でシステムを再起動します。したがって、値が高く設定されている場合、SIGINT のハンドラーは追加の処理を行う必要があります (つまり、少なくともユーザーに警告します)。
ユーザー空間からこの設定を取得する方法が見つかりません:(どんな助けも大歓迎です。