[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "wait" loses signals

From: Denys Vlasenko
Subject: Re: "wait" loses signals
Date: Thu, 20 Feb 2020 09:02:37 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0

On 2/19/20 9:30 PM, Chet Ramey wrote:
On 2/19/20 5:29 AM, Denys Vlasenko wrote:
A bug report from Harald van Dijk:

trap 'kill $!; exit' TERM
{ kill $$; exec sleep 9; } &
wait $!

The above script ought exit quickly, and not leave a stray
"sleep" child:
(1) if "kill $$" signal is delivered before "wait",
then TERM trap will kill the child, and exit.

This strikes me as a shaky assumption, dependent on when the shell receives
the SIGTERM and when it runs traps.

The undisputable fact is that after shell forks a child
to run the "{...} &" subshell, it will receive the SIGTERM signal.

And since it has a trap for it, it should be run.

(There's nothing in POSIX that says
when pending traps are processed. Bash runs them after commands.)

Yes, and here we are "after command", specifically after "{...} &" command.
Since we got a trapped signal, we must run its trap.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]