Поймать SIGINT в Bash, обрабатывать И игнорировать

Возможно ли в bash перехватить SIGINT, сделать что-то, а затем проигнорировать это (продолжайте работу bash).

Я знаю, что могу игнорировать SIGINT с

trap '' SIGINT

И я могу также сделать что-то на подписи с

trap handler SIGINT

Но это все равно остановит сценарий послеhandler выполняет. Например.

#!/bin/bash

handler()
{
    kill -s SIGINT $PID
}

program &
PID=$!

trap handler SIGINT

wait $PID

#do some other cleanup with results from program

Когда я нажимаю Ctrl + C, SIGINT для программы будет отправлено, но Bash пропуститwait ДО того, как программа была должным образом закрыта и создала свой вывод в своем обработчике сигнала.

Используя ответ @suspectus, я могу изменитьwait $PID чтобы:

while kill -0 $PID > /dev/null 2>&1
do
    wait $PID
done

Это на самом деле работает для меня, я просто не уверен на 100%, если это «чистый» или «грязный обходной путь».

Ответы на вопрос(1)

Ваш ответ на вопрос