通过 bash 脚本将 SIGINT 传递给应用程序

通过 bash 脚本将 SIGINT 传递给应用程序

我有一个用 C++ 编写的 Linux 应用程序,它捕获 SIGINT 中断以便在退出之前进行一些最后的清理。我在 bash 脚本中调用此应用程序。现在,当我在前台运行 bash 脚本时键入 control-C 时,脚本会终止,它调用的程序也会终止,但不运行最后的清理代码。我怎样才能让中断通过 bash 脚本直接传递到应用程序,从而进行最后的清理,然后正常退出,然后导致脚本本身退出?

答案1

bash还能够陷阱信号。可以捕获信号以使脚本不会终止,然后在陷阱处理程序中将kill信号传递给您的应用程序。

答案2

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

trap "kill -3 %?somecommand" sigint

somecommand&
wait %?somecommand

相关内容