mirror of
https://github.com/coreutils/coreutils.git
synced 2024-11-24 10:23:31 +08:00
timeout: with --foreground don't send SIGCONT
* src/timeout.c (cleanup): Don't send SIGCONT to the monitored program when --foreground is specified, as it's generally not needed for foreground programs, and can cause intermittent signal delivery issues with monitors like GDB for example. * doc/coreutils.texi (timeout invocation): Mention that SIGCONT is not sent with --foreground. * NEWS: Mention the behavior change.
This commit is contained in:
parent
703747f892
commit
45b8fe430d
2
NEWS
2
NEWS
@ -92,6 +92,8 @@ GNU coreutils NEWS -*- outline -*-
|
||||
tee does not treat the file operand '-' as meaning standard output any longer,
|
||||
for better conformance to POSIX. This feature was added in coreutils-5.3.0.
|
||||
|
||||
timeout --foreground no longer sends SIGCONT to the monitored process,
|
||||
which was seen to cause intermittent issues with GDB for example.
|
||||
|
||||
** Improvements
|
||||
|
||||
|
@ -16594,7 +16594,10 @@ from the terminal (like Ctrl-C for example)
|
||||
@end enumerate
|
||||
|
||||
Note in this mode of operation, any children of @var{command}
|
||||
will not be timed out.
|
||||
will not be timed out. Also SIGCONT will not be sent to @var{command},
|
||||
as it's generally not needed with foreground processes, and can
|
||||
cause intermittent signal delivery issues with programs that are monitors
|
||||
themselves (like GDB for example).
|
||||
|
||||
@item -k @var{duration}
|
||||
@itemx --kill-after=@var{duration}
|
||||
|
@ -203,15 +203,17 @@ cleanup (int sig)
|
||||
in case it has itself become group leader,
|
||||
or is not running in a separate group. */
|
||||
send_sig (monitored_pid, sig);
|
||||
|
||||
/* The normal case is the job has remained in our
|
||||
newly created process group, so send to all processes in that. */
|
||||
if (!foreground)
|
||||
send_sig (0, sig);
|
||||
if (sig != SIGKILL && sig != SIGCONT)
|
||||
{
|
||||
send_sig (monitored_pid, SIGCONT);
|
||||
if (!foreground)
|
||||
send_sig (0, SIGCONT);
|
||||
send_sig (0, sig);
|
||||
if (sig != SIGKILL && sig != SIGCONT)
|
||||
{
|
||||
send_sig (monitored_pid, SIGCONT);
|
||||
send_sig (0, SIGCONT);
|
||||
}
|
||||
}
|
||||
}
|
||||
else /* we're the child or the child is not exec'd yet. */
|
||||
|
Loading…
Reference in New Issue
Block a user