9

我的应用程序需要对休眠模式做出反应,以便它可以在暂停时执行一些操作,在恢复时执行其他操作。我找到了一些特定于分配的方法来实现它(Upower + DBus),但没有找到任何通用的方法。有没有办法做到这一点?

谢谢!

4

2 回答 2

4

我相信您正在寻找 SIGSTOP 和 SIGCONT 信号。您可以将这些发送到正在运行的进程,如下所示:

kill -STOP pid
sleep 60
kill -CONT pid
于 2019-03-04T21:10:51.483 回答
3

一个简单的解决方案是使用自管。打开管道并定期向其写入时间戳。select在这个管道上读取时间戳并将它们与当前时间进行比较。当有很大的差距时,这意味着您刚刚从系统暂停或休眠模式中醒来。

至于其他方式,盖子关闭并翻转开关的时间不多。

如果你真的需要对挂起采取行动,那么你需要在 pm-utils 中设置像https://help.ubuntu.com/community/PowerManagement/ReducedPower这样的 powersave 挂钩。它可能很简单

kill -1 `cat mypid` ; sleep 1

然后,您的进程将捕获 SIGHUP 并执行需要执行的操作以准备暂停。睡眠会延迟该过程足够长的时间,以便您的程序对信号做出反应。

于 2011-08-04T05:42:45.307 回答