login(1): use setsid() and use given tty

This commit is contained in:
Mark
2020-08-01 23:36:49 +03:00
parent 072464e40a
commit 169821b9ac
3 changed files with 27 additions and 1 deletions
+1 -1
View File
@@ -2,4 +2,4 @@
init:1:wait:/sbin/rc default
l0:1:once:/bin/login
l0:1:once:/bin/login /dev/tty0
+4
View File
@@ -3,5 +3,9 @@
echo Mounting /dev
mount -t devfs /dev
chmod 0666 /dev/tty0
chown 0:1000 /dev/ttyS0
chmod 0660 /dev/ttyS0
echo Mounting /sys
mount -t sysfs /sys
+22
View File
@@ -163,6 +163,28 @@ int main(int argc, char **argv) {
return -1;
}
if (argc != 2) {
fprintf(stderr, "usage: login TTY\n");
return -1;
}
// Will release 0, 1, 2
if (setsid() < 0) {
perror("setsid()");
return -1;
}
// Open the terminal
if (open(argv[1], O_RDONLY, 0) != STDIN_FILENO) {
return -1;
}
if (open(argv[1], O_WRONLY, 0) != STDOUT_FILENO) {
return -1;
}
if (dup(STDOUT_FILENO) != STDERR_FILENO) {
return -1;
}
signal(SIGINT, signal_handler);
char spnam_buf[128];