Как убить процесс, который блокирует устройства ввода?
В проекте на C++ использую OIS для работы с устройствам ввода, но по какой то причине, когда задействован listener на клавиатуру и текущее приложение активно, не работают комбинации клавиш системы, например, при незадействованном OIS Alt+F4 работает, но с ним подобные команды не откликаются.
Все бы ничего, если бы в debug режиме, когда приложение словит ошибку, не блокировалась клавиатура и мыши, из-за чего я не могу никакими средствами убить процесс: ни через графическую среду, ни через hotkey
UPDATE: дополню еще тем, что блокируется ввод-вывод при запущенном приложении, но Alt-Tab позволяет перефокусироваться на другое окно, но вот при отладке через GDB даже это нельзя сделать
Виталий Столяров: Не знаю какой IDE вы пользуетесь, но gdb умеет писать свои логи в файл - можете попробовать (сам ни разу не пытался убивать gdb, поэтому не знаю что там получится, но по идее логи должны сохраняться)
Самый тупой способ
touch killthemall.sh
chmod +x killthemall.sh
echo "
#!/bin/bash
a = `ps -ax |grep listener`
for b in $a
do
kill -9 $b
done
" > killthemall.sh
и потом запихать в крон
crontab -e
*/1 * * * * /path/killthemall.sh
скрипт будет запускатся каждую минуту проверять.
Можно посидеть и допилить добавить в автозагрузку rc.d сделать цикл while sleep 1 и тогда он будет при загрузке запускатся мониторить и убивать этот процесс.
Но это тушение пожара. Разберитесь откуда ноги растут.