Немного контекста вокруг моего вопроса. Я рендеринг непосредственно на /dev/fb1
, который подключен к ЖК-дисплею. Этот ЖК-дисплей также работает /dev/tty0
. Я могу отрендерить до /dev/fb1
, но мигающий курсор консоли явно мешает работе. Таким образом я пытаюсь установить его в графический режим.
const auto ttyfd = open("/dev/tty0", O_RDWR);
if(ttyfd < 0) {
log->error("Error opening /dev/tty0: {} (errno={})", utils::error_to_string(errno), errno);
throw std::runtime_error{"Error opening tty"};
}
if(ioctl(ttyfd, KDSETMODE, KD_GRAPHICS)) {
log->error("Error setting /dev/tty into graphics mode: {} (errno={})", utils::error_to_string(errno), errno);
throw std::runtime_error{"Error setting tty to graphics mode"};
}
Когда я запускаю это из сеанса SSH, он не работает, потому что /dev/tty0
не принадлежит моему сеансу, и поэтому я получаю permission denied
в open
. Запуск моего приложения с правами root дает ожидаемый результат.
Есть ли способ достичь того же результата без необходимости запускать мое приложение с правами root?