将信号捕获到进程组

Jac*_*cek 5 linux bash

有没有办法捕获发送到进程组的信号,以便任何子进程都不会受到信号的影响?

我的问题是我有一个应用程序在SIGTERM上很好地终止但在SIGUSR1上打破了干净,所以我想保护它不受SIGUSR1的影响.我想过编写一个简单的bash脚本:

#!/bin/bash

runapp &
childspid=$!

trap "kill -TERM $childspid ; exit" USR1

while true ; do
    sleep 10 ;
done
Run Code Online (Sandbox Code Playgroud)

不幸的是,凶手很狡猾并且将SIGUSR1发送给整个流程组而不仅仅是领导者.

非常感谢,

Kra*_*mar 0

只需为 SIGUSR1 信号编写您自己的信号处理程序即可捕获该信号并且不采取任何操作。