我的应用程序需要在休眠模式下作出反应,以便它可以在暂停和其他恢复操作上执行某些操作。我发现了一些特定于分发的方法来实现它(Upower + DBus),但没有找到任何通用的东西。有办法吗?
谢谢!
答案 0 :(得分:2)
一个简单的解决方案是使用自管道。打开一个管道并定期向其写入时间戳。此管道上的select
用于读取时间戳并将其与当前时间进行比较。当存在较大差距时,这意味着您刚刚从系统暂停或休眠模式中醒来。
至于另一种方式,盖子关闭并翻转开关的时间不多。
如果你真的需要在暂停时采取行动,那么你需要在pm-utils中设置类似于https://help.ubuntu.com/community/PowerManagement/ReducedPower的powersave钩子。它可以像
一样简单kill -1 `cat mypid` ; sleep 1
然后,您的流程会捕获SIGHUP并执行需要执行的操作以准备暂停。睡眠会使程序延迟足够长的时间,以便程序对信号作出反应。
答案 1 :(得分:0)
我相信您正在寻找SIGSTOP和SIGCONT信号。您可以将它们发送到正在运行的进程中,如下所示:
kill -STOP pid
sleep 60
kill -CONT pid