Linux中有暂停\恢复信号吗?

时间:2011-05-26 09:05:28

标签: linux signals hibernation

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

谢谢!

2 个答案:

答案 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