如何使用C检测系统是否在Linux中处于待机状态

时间:2013-01-17 10:04:48

标签: c linux

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

对于Linux,C中是否有其他选择?

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

2 个答案:

答案 0 :(得分:5)

最后我找到了解决方案。

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

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

内容就像


#!/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程序

答案 1 :(得分:2)

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

a)acpid守护程序钩子,如果它存在,acpid配置通常在/etc/acpi中 b)DBus daemon hooks,如果它在系统上预先发送的话 c)阅读acpid来源,看看它是如何得到信号的 d)编写自己的内核模块