diff options
-rw-r--r-- | include/qemu-common.h | 1 | ||||
-rw-r--r-- | os-posix.c | 31 | ||||
-rw-r--r-- | os-win32.c | 5 | ||||
-rw-r--r-- | vl.c | 2 |
4 files changed, 9 insertions, 30 deletions
diff --git a/include/qemu-common.h b/include/qemu-common.h index b87e9c2..f862214 100644 --- a/include/qemu-common.h +++ b/include/qemu-common.h @@ -357,7 +357,6 @@ char *qemu_find_file(int type, const char *name); void os_setup_early_signal_handling(void); char *os_find_datadir(void); void os_parse_cmd_args(int index, const char *optarg); -void os_pidfile_error(void); /* Convert a byte between binary and BCD. */ static inline uint8_t to_bcd(uint8_t val) @@ -221,18 +221,14 @@ void os_daemonize(void) do { len = read(fds[0], &status, 1); } while (len < 0 && errno == EINTR); - if (len != 1) { - exit(1); - } - else if (status == 1) { - fprintf(stderr, "Could not acquire pidfile\n"); - exit(1); - } else { - exit(0); - } - } else if (pid < 0) { - exit(1); - } + + /* only exit successfully if our child actually wrote + * a one-byte zero to our pipe, upon successful init */ + exit(len == 1 && status == 0 ? 0 : 1); + + } else if (pid < 0) { + exit(1); + } close(fds[0]); daemon_pipe = fds[1]; @@ -290,17 +286,6 @@ void os_setup_post(void) } } -void os_pidfile_error(void) -{ - if (daemonize) { - uint8_t status = 1; - if (write(daemon_pipe, &status, 1) != 1) { - perror("daemonize. Writing to pipe\n"); - } - } else - fprintf(stderr, "Could not acquire pid file: %s\n", strerror(errno)); -} - void os_set_line_buffering(void) { setvbuf(stdout, NULL, _IOLBF, 0); @@ -104,11 +104,6 @@ void os_parse_cmd_args(int index, const char *optarg) return; } -void os_pidfile_error(void) -{ - fprintf(stderr, "Could not acquire pid file: %s\n", strerror(errno)); -} - int qemu_create_pidfile(const char *filename) { char buffer[128]; @@ -3999,7 +3999,7 @@ int main(int argc, char **argv, char **envp) #endif if (pid_file && qemu_create_pidfile(pid_file) != 0) { - os_pidfile_error(); + fprintf(stderr, "Could not acquire pid file: %s\n", strerror(errno)); exit(1); } |