c语言 - Linux类似于Windows的SetSystemPowerState?



我正在用 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");

要恢复

相关内容

  • 没有找到相关文章

最新更新