Remove redundant code from runshutdown() now tcsetsid(3) works reliably.
We can now just call setctty() without any problems. This means the shell running the shutdown script is now the session leader, just like on startup.
This commit is contained in:
parent
9c373a81a3
commit
43273e33a3
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=194257
@ -1563,30 +1563,13 @@ runshutdown(void)
|
|||||||
shell = get_shell();
|
shell = get_shell();
|
||||||
|
|
||||||
if ((pid = fork()) == 0) {
|
if ((pid = fork()) == 0) {
|
||||||
int fd;
|
|
||||||
|
|
||||||
/* Assume that init already grab console as ctty before */
|
|
||||||
|
|
||||||
sigemptyset(&sa.sa_mask);
|
sigemptyset(&sa.sa_mask);
|
||||||
sa.sa_flags = 0;
|
sa.sa_flags = 0;
|
||||||
sa.sa_handler = SIG_IGN;
|
sa.sa_handler = SIG_IGN;
|
||||||
sigaction(SIGTSTP, &sa, (struct sigaction *)0);
|
sigaction(SIGTSTP, &sa, (struct sigaction *)0);
|
||||||
sigaction(SIGHUP, &sa, (struct sigaction *)0);
|
sigaction(SIGHUP, &sa, (struct sigaction *)0);
|
||||||
|
|
||||||
revoke(_PATH_CONSOLE);
|
setctty(_PATH_CONSOLE);
|
||||||
if ((fd = open(_PATH_CONSOLE, O_RDWR)) == -1)
|
|
||||||
warning("can't open %s: %m", _PATH_CONSOLE);
|
|
||||||
else {
|
|
||||||
dup2(fd, 0);
|
|
||||||
dup2(fd, 1);
|
|
||||||
dup2(fd, 2);
|
|
||||||
if (fd > 2)
|
|
||||||
close(fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Run the shutdown script.
|
|
||||||
*/
|
|
||||||
|
|
||||||
char _sh[] = "sh";
|
char _sh[] = "sh";
|
||||||
char _reboot[] = "reboot";
|
char _reboot[] = "reboot";
|
||||||
|
Loading…
Reference in New Issue
Block a user