0

我正在用 C 编写一个程序,考虑到交叉兼容性,但我认为如果没有至少一些特定于平台的#ifdefs,我将无法逃脱。

所需功能之一是能够将系统置于暂停电源模式。在 Windows 上,使用适当的操作系统配置,这是通过使用 SetSystemPowerState() 函数来完成的(在调用之前进行适当的安全舞蹈之后)。

是否有 Linux 功能可以做同样的事情?我怀疑它在那里,但到目前为止我的搜索只是选择命令行程序,而不是任何标题或函数签名。

4

2 回答 2

2

尝试安装 pm-utils。看这里

取决于您的 Linux,您最好使用 yum、apt-get 等...

然后它会是这样的:system("pm-hibernate")system("pm-suspend")

也许您需要使用该实用程序的完整路径。

它是开源的,所以如果你想用 c 对其进行编程,请打开源代码并检查它是如何完成的。

编辑:

一个 c 解决方案是使用 d-bus 看这里

它是交流源代码,检查 dbus-send.c(在工具目录中)如何工作(使用下面的参数)。

全部构建,您所需要的只是与 libdbus 链接。

dbus-send 工具的 cpmmand 行:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
 /org/freedesktop/Hal/devices/computer \
 org.freedesktop.Hal.Device.SystemPowerManagement.Suspend \
 int32:0
于 2013-12-24T18:59:34.060 回答
1

制作一个文件 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");

恢复

于 2013-12-24T21:05:50.193 回答