#c #ncurses
#c #ncurses
Вопрос:
Почему ncurses не работает в фоновом режиме?
#include <iostream>
#include <ctime>
#include <unistd.h>
#include <ncurses.h>
int main () {
setlocale(LC_ALL, "");
while (true) {
time_t seconds = time(nullptr);
tm* timeinfo = localtime(amp;seconds);
if (timeinfo->tm_hour >= 23 || timeinfo->tm_hour <= 3) {
unsigned wait = 15 * 60;
initscr(); cbreak(); noecho();
printw("Go to bed, pls)n");
printw("Press enter:");
int ch = getch();
while (ch == 410) {
ch = getch();
}
endwin();
sleep(wait);
continue;
}
unsigned wait = (23 - timeinfo->tm_hour) * 3600 - (60 - timeinfo->tm_min) * 60 - timeinfo->tm_sec;
sleep(wait);
}
}
Но когда я запускаю этот код в фоновом режиме (./a.out amp;), я не вижу окна ncurses. Возможно ли это исправить?
Комментарии:
1. Для правильного отображения программы ncurses должна быть единственной программой, выводящей текст на терминал. Если вы поместите его в фоновом режиме, то ваши взаимодействия на переднем плане будут мешать размещению курсора, прокрутке, выбору цвета шрифта и т. Д. Просто Не очень хорошая идея….
2. Вероятно, он ожидает ввода, но не может получить его, потому что он находится в фоновом режиме. Вывод произойдет, когда ввод будет готов…
3. Попробуйте запустить
vi
в фоновом режиме. Работает ли это? Должно ли это работать? Как это должно работать?