在 C 中关闭监视器

Sim*_*mon 0 c linux

我有一个我正在用 C 处理的算法。它需要一段时间才能完成,所以为了省电,我想关闭屏幕。

在谷歌上快速搜索(https://askubuntu.com/questions/62858/turn-off-monitor-using-command-line)后,我发现我可以使用简单的命令关闭屏幕:

xset -display :0.0 dpms force off 
Run Code Online (Sandbox Code Playgroud)

这是一种享受,但是我希望我的 C 代码在它启动后立即自动关闭屏幕。

我在想一些事情,system("xset -display :0.0 dpms force off");但是,我一直不鼓励这样做(并且过去有过一些糟糕的经历)。有没有更好的方法来完成这项工作(希望是系统调用或类似的)?

我知道 bash 脚本可能非常适合这项工作,但是,如果可能的话,我希望将所有内容完全保留在我的程序中。

mos*_*svy 5

这与以下内容相同xset dpms force off

#include <X11/Xlib.h>
#include <X11/extensions/dpms.h>
#include <err.h>
int main(void){
        Display *dpy;
        if(!(dpy = XOpenDisplay(0)))
                errx(1, "cannot open display '%s'", XDisplayName(0));
        DPMSEnable(dpy);
        DPMSForceLevel(dpy, DPMSModeOff);
        XSync(dpy, False);
}
Run Code Online (Sandbox Code Playgroud)

cc xdfo.c -o xdfo -lX11 -lXext.

xset也睡了 100 毫秒后DPMSEnable,我不知道为什么会这样。