Возможно ли написать программу на C, которая работает на терминале XFCE до тех пор, пока пользователь не нажмет клавишу Esc? Если да, то как?Линейный манипулятор консоли Linux
ответ
Я бы порекомендовал вам изучить ncurses, API, который обычно используется для реализации такого рода чтения с клавиатуры в терминальных/консольных приложениях. Не должно быть необходимости делать это в зависимости от платформы.
Переключить терминал в non-canonical mode
Самое простое решение нажатием Ctrl-C в окне терминала. Ваше приложение немедленно остановится или вы сможете обработать событие с помощью обработчика сигнала SIGINT.
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
volatile int exit_loop;
void sig_hnd(void){ exit_loop=1; }
int main(void){
signal(SIGINT, (void (*)(int))sig_hnd);
for(exit_loop=0; !exit_loop;){
puts("do some work");
sleep(1);
}
puts("\nend of work\n");
}
Я думаю, вы задаете неправильный вопрос. Почему вы используете интерактивный терминал вообще для долговременного процесса? Почему бы просто не запускать как демон и не регистрировать «лучшее» решение через равные промежутки времени? Терминал предназначен для интерактивного использования человеком. Есть более эффективные способы обработки программного обеспечения, которое должно работать в течение «месяцев».
- 1. C++ манипулятор
- 2. Манипулятор Фабрика
- 3. JVisualVM для консоли Linux?
- 4. Линейный шлюз Linux с единой сетью назначения
- 5. Линейный скрипт Linux: не удается выделить память
- 6. Линейный дамп Linux и сброс кучи?
- 7. Матричный манипулятор Matlab
- 8. Image Манипулятор Laravel
- 9. Как написать собственный манипулятор?
- 10. Лучший манипулятор массива API
- 11. Манипулятор текстового файла Python
- 12. манипулятор sigterm в OSx
- 13. Манипулятор указателя в java
- 14. «Ошибка при загрузке Манипулятор»
- 15. Пользовательский манипулятор для класса
- 16. Двойной манипулятор с ползунком
- 17. Показать изображение с консоли Linux
- 18. Режим отладки консоли Linux FireFox.
- 19. Использование консоли linux в pycharm
- 20. Как разделить на консоли Linux?
- 21. Как захватить линейный ввод с консоли в оболочке
- 22. Пользовательский манипулятор для C++ iostream
- 23. Javascript Генератор/манипулятор воздушного шара
- 24. манипулятор манипуляции с перекрестным контуром
- 25. Ручной манипулятор с простым регистратором
- 26. Визуальный базовый манипулятор буфера обмена
- 27. HighCharts - пользовательский манипулятор перерисовывания прокрутки?
- 28. Манипулятор информации счетчика - Python 2.7
- 29. x86-64 «линейный адрес» для PEBS из пользовательского пространства Linux?
- 30. Линейный поток микрофонов Linux OpenWRT с командной строкой
Что вы хотите, чтобы после того, как пользователь нажал клавишу Esc? – Glen
Я планирую написать одну программу, которая вычисляет оптимальное решение одной конкретной проблемы. Он должен выводить наилучшее возможное решение, которое он нашел таким образом. Я не знаю хорошего алгоритма проблемы, поэтому мне нужно найти случайные числа, которые удовлетворяют этой проблеме. Поскольку это может занять месяцы, было бы неплохо прервать расчет, когда мне захочется остановить его. – Jaska