Thanks for the explanation, it makes sense to use pgids for that
purpose. In the case in which I am interested (vimtex plugin failing to
kill latexmk, which works on another machine running debian linux) I
guessed that the plugin sent a SIGTERM signal only to the 'sh -c'
process, which would work with bash because bash somehow terminates the
subprocess immediately. But I guessed wrong: vimtex uses vim's job_stop,
which according to vim's help should send the signal to the process
group, with the explicit intent of terminating 'sh -c' commands. So this
issue comes from either vim or vimtex.

On Sun, Nov 25, 2018 at 09:04:22PM -0800, Philip Guenther wrote:
> On Fri, Nov 23, 2018 at 1:51 PM Olivier Taïbi <[email protected]> wrote:
> 
> > Sorry about the wrong report, I just tested again and I can see the same
> > behaviour with OpenBSD 6.4: sending SIGTERM to the sh process after
> > launching sh -c 'sleep 1000' does not result in sh sending a SIGTERM to
> > the sleep process.
> >
> 
> Hmm, why should it?  If you wanted to kill whatever processes where started
> from that invocation, shouldn't you send SIGTERM to the process group?
> 
> 
> 
> > Philip, what was your test?
> >
> 
>  : morgaine; sh -c 'while :; do :; done' &
> [3] 16632
> : morgaine; kill 16632
> [3] - Terminated           sh -c "while :; do :; done"
> : morgaine;
> : morgaine; sh -c 'while :; do sleep 1; done' &
> [3] 59539
> : morgaine; kill 59539
> : morgaine;
> [3] - Terminated           sh -c "while :; do sleep 1; done"
> : morgaine;
> 
> sh itself doesn't ignore SIGTERM, but rather exits after receiving it.
> 
> 
> Philip Guenther

Reply via email to