このshutdown
コマンドはタイマーを分と時間単位でのみ設定できますが、秒は設定できず驚きました。
マニュアルページから
時間文字列は、時間/分を表す「hh:mm」形式であり、終了実行時間を指定し、24時間形式で指定されます。あるいは、今からmまでの特定の時間を表す「+ m」構文を使用することもできます。 「now」は即時終了をトリガーする「+0」のエイリアスです。時間パラメータが指定されていない場合は、「+ 1」が暗示されます。
私がやろうとしているのは、私のウィンドウマネージャ(qtile)にボタンを作成することです。このボタンをマウスの左ボタンで押してから5秒以内にコンピュータを終了したいのですが、クリックを逃したら右クリックしてボタンを押してこの操作をキャンセルしたいと思います。
sleep 5; shutdown now
キャンセルしたくありません。
キャンセル操作を実行する方法はありますか? 2番目の精度を持つシャットダウンに似たプログラムはありますか?
答え1
Andy Daltonのアドバイス(質問の説明を参照)に従うのが最善の方法です。
しかし、本当にこれを行うプログラムが必要な場合は、次のように書くのが簡単です。
int main(void) { sleep(5); system("shutdown -h now"); }
それを入れてsecondsshutdown.c
コンパイルすると、gcc secondsshutdown.c -o secondsshutdown
好きなように機能します。
(このコードは、コンパイル時に警告を表示しなくなるか、オプションを許可するように拡張できます。ここではそうしないため、読みやすくなります。)