Users may change terminal sizes if the process is connected to a
terminal, so we can't reasonably expect SIGWINCH to work as
intended.
exit if $quit++;
kill_workers($s);
} elsif ($s eq 'WINCH') {
- $worker_processes = 0;
+ if (-t STDIN || -t STDOUT || -t STDERR) {
+ warn
+"ignoring SIGWINCH while connected to terminal\n";
+ $SIG{WINCH} = 'IGNORE';
+ } else {
+ $worker_processes = 0;
+ }
} elsif ($s eq 'HUP') {
$worker_processes = $set_workers;
kill_workers($s);