Выключение монитора в C - PullRequest
0 голосов
/ 01 марта 2020

У меня есть алгоритм, который я обрабатываю в C. Это займет некоторое время, поэтому для экономии энергии я хочу выключить экран.

После быстрого поиска в Google (https://askubuntu.com/questions/62858/turn-off-monitor-using-command-line) я обнаружил, что могу выключить экран с помощью простых команд:

xset -display :0.0 dpms force off 

Это работает, удовольствие, однако я хотел бы, чтобы мой код C автоматически выключал экран, как только он начался.

Я думал о чем-то вроде system("xset -display :0.0 dpms force off");, однако я всегда отговаривал от этого (и имели некоторый плохой опыт в прошлом). Есть ли лучший способ сделать это (надеюсь, системный вызов или аналогичный)?

Я знаю, что сценарий bash может быть идеально подходит для работы, но я стараюсь держать все чисто внутри моей программы, если это возможно.

1 Ответ

5 голосов
/ 01 марта 2020

Это то же самое, что и 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);
}

скомпилировать его с cc xdfo.c -o xdfo -lX11 -lXext.

xset также спит 100 мс после DPMSEnable, у меня есть понятия не имею, почему это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...