6

我想知道如何使用 C 在 Linux 中检测系统是否进入待机模式。我WM_POWERBROADCAST在 windows 中找到了一条为此目的调用的消息,它在进入睡眠模式之前发送了此消息。

对于 Linux,C 中是否有任何替代方案?

我听说 DBus 可以用于相同的目的,有人可以解释一下吗?

4

2 回答 2

6

最后我找到了解决方案。

我们可以为此使用 pm 实用程序。

如果您将任何 shell 脚本放在 /etc/pm/sleep.d 文件夹中,它将在系统进入睡眠之前和系统恢复之后自动执行。

内容会像


#!/bin/bash
case $1 in
suspend)
    #suspending to RAM
    /home/harikrishnan/Desktop/sleepd Sleeping
    ;;
resume)
    #resume from suspend
    sleep 3
    /home/harikrishnan/Desktop/sleepd Woken
    ;;
esac

在这里它将使用参数执行 /home/harikrishnan/Desktop/sleepd 程序

于 2013-01-22T07:50:08.093 回答
2

AFAIK 在 Linux 中没有这样的信号,但你可以试试

a) acpiddaemon hooks,如果它存在,acpid 配置通常在/etc/acpi
b) DBus daemon hooks,如果它存在于系统上
c) 读取acpid源代码以查看它如何获取信号
d) 编写您自己的内核模块

于 2013-01-17T10:28:51.103 回答