我有一个我正在用 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 脚本可能非常适合这项工作,但是,如果可能的话,我希望将所有内容完全保留在我的程序中。
这与以下内容相同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,我不知道为什么会这样。