From 9af7c9d6b62ceb07a9ba24cee0cf4a08c689235e Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 19 Jan 2007 21:19:35 +0000 Subject: openvt,getty,vfork_daemon_rexec,mount: tighten up fd cleanup code (will close all fd's > 2 on daemonization now) getty: fix "getty -" support, and also do not try to chown/chmod "-" telnetd: fix "lost ctty" bug Yet another attempt on saner function names: bb_sanitize_server_stdio(0/1) -> bb_sanitize_stdio() + bb_daemonize(); --- console-tools/openvt.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'console-tools/openvt.c') diff --git a/console-tools/openvt.c b/console-tools/openvt.c index f1cf5645b..c7b3e4fa4 100644 --- a/console-tools/openvt.c +++ b/console-tools/openvt.c @@ -17,7 +17,6 @@ int openvt_main(int argc, char **argv) int fd; char vtname[sizeof(VC_FORMAT) + 2]; - if (argc < 3) { bb_show_usage(); } @@ -25,18 +24,16 @@ int openvt_main(int argc, char **argv) sprintf(vtname, VC_FORMAT, (int)xatoul_range(argv[1], 1, 63)); if (fork() == 0) { - /* leave current vt */ - if (setsid() < 0) { - bb_perror_msg_and_die("setsid"); - } - close(0); /* so that new vt becomes stdin */ - + /* child */ + /* leave current vt (controlling tty) */ + setsid(); /* and grab new one */ fd = xopen(vtname, O_RDWR); - - /* Reassign stdout and sterr */ + /* Reassign stdin, stdout and sterr */ + dup2(fd, STDIN_FILENO); dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); + while (fd > 2) close(fd--); execvp(argv[2], &argv[2]); _exit(1); -- cgit v1.2.3