Процесс, отправляемый SIGINT при запуске с помощью Выскочки

Если процесс VNC все еще работает, он может все еще содержать открытый файл журнала, и он может даже все еще писать в него, и из-за этого файл не был удален из Вашего жесткого диска.

Необходимо перезапустить упомянутый процесс VNC, и пространство должно быть возвращено Вам.

1
задан 15 December 2015 в 10:03
2 ответа

Проблема решила, хотя это было программной ошибкой и не имело отношение к Выскочке. Программа открывает ttyUSB устройство для необработанного (неканонического) входа, но это не очищало флаг ISIG в termios. Каждый раз, когда символ "CTRL-C" (0x02) был получен, ядро генерировало SIGINT и отправило его в программу. Этой проблемы не происходило от удара, потому что termios настройки являются персистентными на файле, и что-то, должно быть, открыло tty и очистилось, ISIG укусил, прежде чем моя программа была выполнена. Это не произошло при выполнении его непосредственно от Выскочки. Мне все еще жаль, что не было некоторого лучшего способа регистрировать/отлаживать сигналы, ptrace является только половиной ответа!

1
ответ дан 4 December 2019 в 01:27

Программа отправляется SIGINT, когда это помещается в фон (думайте ^Z). Обычно вещи, которые собираются жить как демоны, захватывают сигнал и живой на.

Проверьте, если можно запустить программу от интерактивной оболочки и затем поместить ее в фон ^Z. Довольно возможно, что это умрет также.

Если это оказывается ответом, у Вас есть 2 возможности. Если это - Ваша программа, можно захватить SIGINT. Если Вы не имеете доступа к источникам или не хотите проводить дополнительное время при кодировании этой функции, или Вы запускаете программу на некоторых версиях Java VM, которые имеют проблемы с сигналами, то переносят Вашу программу в сценарии, который использует screen запустить и запустить Вашу программу. Таким образом screen входит в фон, но Ваш код дурачат в размышление, что он работает на переднем плане интерактивной сессии.

0
ответ дан 4 December 2019 в 01:27

Теги

Похожие вопросы