Обработчик сигнала с клавиатуры

Аватар пользователя slazenger

народ подскажите, у меня есть консольная прога, которая что-то считает. как сделать так чтобы если я что-то введу с клавиатуры и нажму enter, то прога как-нибидь на это отреагировала. ну например введу quit и она запустит функцию завершения

Аватар пользователя IsakovAN

обработчик сигнала с клавиатуры

Если прога изначально задумана как не интерактивная, то либо смириться с Ctrl-C, либо извращаться.
Повесить обработчик сигнала ALARM и переодически его вызывать. В нем проводить обработку ввода.
Короче, не видя кода - сказать трудно. Улыбка

Аватар пользователя slazenger

Re: обработчик сигнала с клавиатуры

обычно я использовал для таких целей отдельный thread, но в этом случае не могу потому что прога активно их уже использует, считает количество запущенных и тп. то есть добавление нового вызовет много лишнего гемора
я знаю что можно установить обработчик на сигнал, то есть например на kill -11 прога будет реагировать по-своему, это я знаю как делать. подозреваю что сигнал с клавиатуры можно обрабатывать подобным образом вот и спрашиваю. или это совсем разные вещи?

Аватар пользователя IsakovAN

Re: обработчик сигнала с клавиатуры

slazenger писал(а):
сигнал с клавиатуры

Нет никакого SIGKEYBOARD. Если не верите посмотрите в headerах ядра.
Есть только stdin, тобищь дескриптор 0. Наличие в нем чего-либо можно узнавать при помощи функции select. Очевидно, делать это надо переодически, не так ли? Отсюда вижу два варианта: мусорить код или использовать SIGALARM.

Аватар пользователя slazenger

Re: обработчик сигнала с клавиатуры

Да, наверное вы правы. Спасибо за помощь!

RSS-материал