我正在用 C 编写一个程序,考虑到交叉兼容性,但我认为如果没有至少一些特定于平台的#ifdefs,我将无法逃脱。
所需功能之一是能够将系统置于暂停电源模式。在 Windows 上,使用适当的操作系统配置,这是通过使用 SetSystemPowerState() 函数来完成的(在调用之前进行适当的安全舞蹈之后)。
是否有 Linux 功能可以做同样的事情?我怀疑它在那里,但到目前为止我的搜索只是选择命令行程序,而不是任何标题或函数签名。
尝试安装 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
制作一个文件 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");
恢复