Как прервать фоновый демон Python с помощью Ctrl + C эквивалента (форсировать исключение KeyboardInterrupt) - PullRequest
0 голосов
/ 08 мая 2019

У меня есть демон Python, который контролирует производительность машины во время выполнения другого программного обеспечения.Он в основном извлекает данные целевых процессов с помощью ps и записывает их в CSV-файл, который будет отображаться при остановке демона.

Если демон работает в терминале в качестве процесса переднего плана, пользователь может остановитьэто с Ctrl + C , что вызовет исключение KeyboardInterrupt.Я фиксирую это исключение и затем отображаю содержимое CSV.

Проблема возникает, когда мне нужно запустить демон в фоновом режиме с nohup myDaemon.py &.Он работает нормально, так как генерирует CSV, но поскольку я не могу принудительно вызвать исключение KeyboardInterrupt, CSV не отображаются автоматически, если я убиваю или останавливаю фоновый процесс другими методами, кроме Ctrl + C .

Чего я хочу избежать, так это того, что нужно перенести часть построения в отдельный скрипт и запустить его вручную после остановки демона.

1 Ответ

0 голосов
/ 08 мая 2019

Нашел ответ, читающий kill справочную страницу. Оказывается, сигнал -2 (SIGINT) является эквивалентом Ctrl + C . Протестировано, работает kill -2 <Background_Daemon_PID> и работает просто отлично.

...