народ подскажите, у меня есть консольная прога, которая что-то считает. как сделать так чтобы если я что-то введу с клавиатуры и нажму enter, то прога как-нибидь на это отреагировала. ну например введу quit и она запустит функцию завершения
Если прога изначально задумана как не интерактивная, то либо смириться с Ctrl-C, либо извращаться.
Повесить обработчик сигнала ALARM и переодически его вызывать. В нем проводить обработку ввода.
Короче, не видя кода - сказать трудно.
обычно я использовал для таких целей отдельный thread, но в этом случае не могу потому что прога активно их уже использует, считает количество запущенных и тп. то есть добавление нового вызовет много лишнего гемора
я знаю что можно установить обработчик на сигнал, то есть например на kill -11 прога будет реагировать по-своему, это я знаю как делать. подозреваю что сигнал с клавиатуры можно обрабатывать подобным образом вот и спрашиваю. или это совсем разные вещи?
Нет никакого SIGKEYBOARD. Если не верите посмотрите в headerах ядра.
Есть только stdin, тобищь дескриптор 0. Наличие в нем чего-либо можно узнавать при помощи функции select. Очевидно, делать это надо переодически, не так ли? Отсюда вижу два варианта: мусорить код или использовать SIGALARM.
обработчик сигнала с клавиатуры #1
Если прога изначально задумана как не интерактивная, то либо смириться с Ctrl-C, либо извращаться.
Повесить обработчик сигнала ALARM и переодически его вызывать. В нем проводить обработку ввода.
Короче, не видя кода - сказать трудно.
Re: обработчик сигнала с клавиатуры #2
обычно я использовал для таких целей отдельный thread, но в этом случае не могу потому что прога активно их уже использует, считает количество запущенных и тп. то есть добавление нового вызовет много лишнего гемора
я знаю что можно установить обработчик на сигнал, то есть например на kill -11 прога будет реагировать по-своему, это я знаю как делать. подозреваю что сигнал с клавиатуры можно обрабатывать подобным образом вот и спрашиваю. или это совсем разные вещи?
Re: обработчик сигнала с клавиатуры #3
Re: обработчик сигнала с клавиатуры #4
Да, наверное вы правы. Спасибо за помощь!