我正在用 C 语言编写一个程序,考虑交叉兼容性,但我认为如果没有至少一些特定于平台 #ifdefs,我将无法逃脱。
必需的功能之一是能够将系统置于挂起电源模式。在Windows上,使用适当的操作系统配置,这是通过使用SetSystemPowerState()函数(在调用之前进行适当的安全舞蹈)来完成的。
有没有一个 Linux 函数可以做同样的事情?我怀疑它在那里,但到目前为止,我的搜索只是选择命令行程序,而不是任何标头或函数签名。
尝试安装 pm-utils。 看这里
依靠你的Linux,你最好使用yum,apt-get等。
然后它会像这样:system("pm-hibernate")
或system("pm-suspend")
也许您需要使用该实用程序的完整路径。
它是开源的,所以如果你想用c编程,打开源代码并检查它是如何完成的。
编辑:
一个c解决方案是使用d-bus看这里
它是一个C源代码,检查dbus-send.c(在工具目录中)是如何工作的(使用下面的参数)。
构建所有内容,您所需要的只是与 libdbus 链接。
CPMMand线到DBUS发送工具:
dbus-send --system --print-reply --dest=org.freedesktop.Hal
/org/freedesktop/Hal/devices/computer
org.freedesktop.Hal.Device.SystemPowerManagement.Suspend
int32:0
susp.sh 并保存
文件 dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0
resume.sh 文件并保存 dbus-send --system --print-reply --dest=org.freedesktop.Hal/org/freedesktop/Hal/devices/computer \org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate
现在添加:
system("sh susp.sh");
暂停和
system("sh resume.sh");
要恢复