]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/RESTEnvironment.pm
cli: print_text_table: restore autoformat behavior
[pve-common.git] / src / PVE / RESTEnvironment.pm
index 32ffdd157f48a898697f77f7b582df471c5f6f64..338a534d4abcec6d4eb1292b04f4d3720dc41636 100644 (file)
@@ -494,10 +494,17 @@ sub fork_worker {
        $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { die "received interrupt\n"; };
 
        $SIG{CHLD} = $SIG{PIPE} = 'DEFAULT';
-
-       # set sess/process group - we want to be able to kill the
-       # whole process group
-       POSIX::setsid();
+       $SIG{TTOU} = 'IGNORE';
+
+       # set session/process group allows to kill the process group
+       if ($sync && -t STDIN) {
+           # some sync'ed workers operate on the tty but setsid sessions lose
+           # the tty, so just create a new pgroup and give it the tty
+           POSIX::setpgid(0, 0) or die "failed to setpgid: $!\n";
+           POSIX::tcsetpgrp(fileno(STDIN), $$) or die "failed to tcsetpgrp: $!\n";
+       } else {
+           POSIX::setsid();
+       }
 
        POSIX::close ($psync[0]);
        POSIX::close ($ctrlfd[0]) if $sync;