Ensure forked processes always are on a controlling tty, so the
^C can be properly sent to /dev/console. -Erik
This commit is contained in:
parent
d39d120998
commit
fb6a50820c
3
init.c
3
init.c
@ -411,6 +411,7 @@ static pid_t run(char *command, char *terminal, int get_enter)
|
|||||||
|
|
||||||
if ((pid = fork()) == 0) {
|
if ((pid = fork()) == 0) {
|
||||||
/* Clean up */
|
/* Clean up */
|
||||||
|
ioctl(0, TIOCNOTTY, 0);
|
||||||
close(0);
|
close(0);
|
||||||
close(1);
|
close(1);
|
||||||
close(2);
|
close(2);
|
||||||
@ -430,7 +431,7 @@ static pid_t run(char *command, char *terminal, int get_enter)
|
|||||||
dup2(fd, 0);
|
dup2(fd, 0);
|
||||||
dup2(fd, 1);
|
dup2(fd, 1);
|
||||||
dup2(fd, 2);
|
dup2(fd, 2);
|
||||||
ioctl(0, TIOCSCTTY, 0);
|
ioctl(0, TIOCSCTTY, 1);
|
||||||
tcsetpgrp(0, getpgrp());
|
tcsetpgrp(0, getpgrp());
|
||||||
set_term(0);
|
set_term(0);
|
||||||
|
|
||||||
|
@ -411,6 +411,7 @@ static pid_t run(char *command, char *terminal, int get_enter)
|
|||||||
|
|
||||||
if ((pid = fork()) == 0) {
|
if ((pid = fork()) == 0) {
|
||||||
/* Clean up */
|
/* Clean up */
|
||||||
|
ioctl(0, TIOCNOTTY, 0);
|
||||||
close(0);
|
close(0);
|
||||||
close(1);
|
close(1);
|
||||||
close(2);
|
close(2);
|
||||||
@ -430,7 +431,7 @@ static pid_t run(char *command, char *terminal, int get_enter)
|
|||||||
dup2(fd, 0);
|
dup2(fd, 0);
|
||||||
dup2(fd, 1);
|
dup2(fd, 1);
|
||||||
dup2(fd, 2);
|
dup2(fd, 2);
|
||||||
ioctl(0, TIOCSCTTY, 0);
|
ioctl(0, TIOCSCTTY, 1);
|
||||||
tcsetpgrp(0, getpgrp());
|
tcsetpgrp(0, getpgrp());
|
||||||
set_term(0);
|
set_term(0);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user