Subject: Re: bug#8938: make timeout and CTRL-C

From: Pádraig Brady <[email-masked]>
Date: Wed, 29 Jun 2011 10:55:27 +0100

On 28/06/11 20:10, Alan Curry wrote:
> =?ISO-8859-1?Q?P=E1draig_Brady?= writes:
>>
>> I'm still not convinced we need to be messing with tcsetpgrp()
>> but you're right in that the disconnect between the timeout
>> process group and that of whatever starts `timeout` should be bridged.
>>
>> I'm testing the attached patch at the moment (which I'll split into 2).
>> It only creates a separate group for the child that `timeout` execs,
>> leaving the timeout process in the original group to propagate signals down.
>>
>> I'll need to do lots of testing with this before I commit.
> 
> With this patch the child is guaranteed to not be in the foreground (as far
> as the tty knows) so it will be getting SIGTTIN and possibly SIGTTOU on tty
> operations.

Oh right. This will immediately put dd in sTop state:
  timeout 10 dd
That was one of the main reasons I didn't split the groups
in the first place. I should read my own comments :)
I'm very wary of changing the foreground group (with tcsetpgrp),
which would fix this, but in turn may cause other issues.

> I don't think there's anything that will make every scenario happy. (Except
> for a recursive-kill that doesn't use pgrps!).

Yes, an ideal solution is elusive.
Maybe `make` needs to handle things differently?
If you put the following in a Makefile, how should make respond to Ctrl-C?

all:
	setsid sleep 10

cheers,
Pádraig.