为什么“关机”不能以秒为参数?

为什么“关机”不能以秒为参数?

shutdown命令只能以分钟和小时为单位设置计时器,但不能以秒为单位,这让我感到惊讶。

来自手册页

时间字符串可以采用“hh:mm”格式,表示小时/分钟,指定执行关闭的时间,以 24 小时时钟格式指定。或者,它可以采用语法“+m”,指的是从现在开始的指定分钟数 m。 “now”是“+0”的别名,即触发立即关闭。如果未指定时间参数,则隐含“+1”。

我尝试做的是在我的窗口管理器(qtile)中创建一个按钮。用鼠标左键按下此按钮后,我想在 5 秒内关闭我的计算机,但如果我错过了单击,我想用鼠标右键单击该按钮并取消此操作。

sleep 5; shutdown now如果我想取消的话就不行。

有没有办法让取消工作?也许有一些类似关闭的程序具有秒精度?

答案1

遵循安迪·道尔顿的建议(请参阅问题中的评论)是执行此操作的最佳方法。

但如果你真的想要一个程序来做到这一点,那么编写它很容易:

int main(void) { sleep(5); system("shutdown -h now"); }

如果你把它放进去secondsshutdown.c并用它编译它gcc secondsshutdown.c -o secondsshutdown应该可以做你想要的。

(可以增强此代码,以便在编译时不再出现警告或确保它接受选项。我在这里没有这样做,以便它变得更易于阅读)

相关内容