os-posix: reorder parent notification for -daemonize
Put "success" parent reporting in os_setup_post() to after all other initializers which may also fail, to the very end, so more possible failure cases are reported properly to the calling process. Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> Reviewed-by: Gonglei <arei.gonglei@huawei.com>
This commit is contained in:
parent
fee78fd6d2
commit
25cec2b896
19
os-posix.c
19
os-posix.c
|
@ -255,15 +255,6 @@ void os_setup_post(void)
|
||||||
int fd = 0;
|
int fd = 0;
|
||||||
|
|
||||||
if (daemonize) {
|
if (daemonize) {
|
||||||
uint8_t status = 0;
|
|
||||||
ssize_t len;
|
|
||||||
|
|
||||||
do {
|
|
||||||
len = write(daemon_pipe, &status, 1);
|
|
||||||
} while (len < 0 && errno == EINTR);
|
|
||||||
if (len != 1) {
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
if (chdir("/")) {
|
if (chdir("/")) {
|
||||||
perror("not able to chdir to /");
|
perror("not able to chdir to /");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -278,11 +269,21 @@ void os_setup_post(void)
|
||||||
change_process_uid();
|
change_process_uid();
|
||||||
|
|
||||||
if (daemonize) {
|
if (daemonize) {
|
||||||
|
uint8_t status = 0;
|
||||||
|
ssize_t len;
|
||||||
|
|
||||||
dup2(fd, 0);
|
dup2(fd, 0);
|
||||||
dup2(fd, 1);
|
dup2(fd, 1);
|
||||||
dup2(fd, 2);
|
dup2(fd, 2);
|
||||||
|
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
|
do {
|
||||||
|
len = write(daemon_pipe, &status, 1);
|
||||||
|
} while (len < 0 && errno == EINTR);
|
||||||
|
if (len != 1) {
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue