start-stop-daemon: create pidfile before parent exits, closes 8596
This removes DAEMON_DOUBLE_FORK flag from bb_daemonize_or_rexec(), as SSD was the only user. Also includes fix for -S: now works without -a and -x, does not print pids (compat with "start-stop-daemon (OpenRC) 0.34.11 (Gentoo Linux)"). function old new delta start_stop_daemon_main 1018 1084 +66 add_interface 99 103 +4 fail_hunk 139 136 -3 bb_daemonize_or_rexec 205 183 -22 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/2 up/down: 70/-25) Total: 45 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@ -292,14 +292,14 @@ void FAST_FUNC bb_daemonize_or_rexec(int flags, char **argv)
|
||||
dup2(fd, 0);
|
||||
dup2(fd, 1);
|
||||
dup2(fd, 2);
|
||||
if (flags & DAEMON_DOUBLE_FORK) {
|
||||
/* On Linux, session leader can acquire ctty
|
||||
* unknowingly, by opening a tty.
|
||||
* Prevent this: stop being a session leader.
|
||||
*/
|
||||
if (fork_or_rexec(argv))
|
||||
_exit(EXIT_SUCCESS); /* parent */
|
||||
}
|
||||
// if (flags & DAEMON_DOUBLE_FORK) {
|
||||
// /* On Linux, session leader can acquire ctty
|
||||
// * unknowingly, by opening a tty.
|
||||
// * Prevent this: stop being a session leader.
|
||||
// */
|
||||
// if (fork_or_rexec(argv))
|
||||
// _exit(EXIT_SUCCESS); /* parent */
|
||||
// }
|
||||
}
|
||||
while (fd > 2) {
|
||||
close(fd--);
|
||||
|
Reference in New Issue
Block a user