1

私はこのフォーラムを初めて利用するので、専門家に質問したいと思います。私は次のプログラムを書きました(より大きなものの一部ですが、これは私に問題を引き起こすコードです)

#include <unistd.h>
#include <fcntl.h>

int main()
{
    int fd;
    fd = open("/dev/watchdog",O_RDONLY);
    lseek(fd,0,SEEK_END);
    return 0;
}

気になるのは、このプログラムを root として実行した後、20 ~ 30 秒後にシステムがクラッシュし、その理由が分からないことです。これは通常のユーザーでは発生しません。この問題について教えてください。

ありがとう!

PS。はい、/dev/watchdog が文字ファイルであり、シークできないことは知っていますが、これは非常に奇妙に思えます。

4

1 に答える 1

2

/dev/watchdog が本来の機能を実行しているようです。/dev/watchdog を開いた後は、書き込みを継続する必要があります。そうしないと、システムが再起動します。それをクラッシュさせているのはおそらくlseekではなく、書き込みの欠如です。詳細については、watchdog の Linux マンページを参照してください。

root 以外のユーザーとして実行した場合、おそらく /dev/watchdog のオープンに失敗したため、システムは再起動しませんでした。あなたのコードは open() からのエラーをチェックしていません。

于 2013-10-25T18:58:47.547 に答える