1

У меня есть приложение для Linux, написанное на C++, которое перехватывает прерывание SIGINT для окончательной очистки перед выходом. Я называю это приложение в скрипте bash. Теперь, когда я набираю control-C со сценарием bash, работающим на переднем плане, сценарий завершается так же, как и вызываемая им программа, но без выполнения окончательного кода очистки. Как я могу сделать так, чтобы прерывание проходило через сценарий bash непосредственно к приложению, что привело бы к окончательной очистке, а затем к обычному завершению, которое затем привело бы к завершению самого сценария?

2 ответа2

1

bash также имеет возможность ловить SIGINT. Было бы целесообразно перехватить сигнал, чтобы скрипт не умер, а затем в обработчике перехвата использовать kill чтобы передать сигнал в ваше приложение.

1
#somecommand has to be a unique substring of the command being run

trap "kill -3 %?somecommand" sigint

somecommand&
wait %?somecommand

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .