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();
This commit is contained in:
Denis Vlasenko
2007-01-19 21:19:35 +00:00
parent f8c11aa65d
commit 9af7c9d6b6
15 changed files with 57 additions and 54 deletions

View File

@@ -283,15 +283,19 @@ make_new_session(
/* child */
/* make new process group */
setsid();
tcsetpgrp(0, getpid());
/* ^^^ strace says: "ioctl(0, TIOCSPGRP, [pid]) = -1 ENOTTY" -- ??! */
/* open the child's side of the tty. */
fd = xopen(tty_name, O_RDWR /*| O_NOCTTY*/);
/* NB: setsid() disconnects from any previous ctty's. Therefore
* we must open child's side of the tty AFTER setsid! */
fd = xopen(tty_name, O_RDWR); /* becomes our ctty */
dup2(fd, 0);
dup2(fd, 1);
dup2(fd, 2);
while (fd > 2) close(fd--);
/* make new process group */
setsid();
tcsetpgrp(0, getpid());
/* The pseudo-terminal allocated to the client is configured to operate in
* cooked mode, and with XTABS CRMOD enabled (see tty(4)). */