Предполагая, что процесс завершен изящно (т. Е. Не через kill -9
или любым другим SIGKILL
), вы можете спастись от сигнала и «сделать что-то» перед завершением.(Или даже откажитесь от завершения, если хотите!)
Самый базовый подход - определить at_exit
proc:
at_exit { write_something_to_file }
Или выможет быть более детальным и определять блоки rescue
в коде:
rescue SystemExit, Interrupt
# ...
... Или вы можете установить еще больший контроль, "убивая" процесс с помощью пользовательских сигналов (например, USR1
),вместо отправки SIGINT
: https://ruby -doc.org / core / Signal.html .
Существует множество вариантов, которые вы можете использовать, если только это не SIGKILL
отправляется, так как это не удалось поймать