On 07/09/2018 14:13, Marc-André Lureau wrote: > Register an exit notifier to remove the PID file. By the time atexit() > is called, qemu_write_pidfile() guarantees QEMU owns the PID file, > thus we could safely remove it when exiting. > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
Queued this one, too. Paolo > --- > vl.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/vl.c b/vl.c > index 0eaf948d32..51af016602 100644 > --- a/vl.c > +++ b/vl.c > @@ -2603,6 +2603,16 @@ static void qemu_run_exit_notifiers(void) > notifier_list_notify(&exit_notifiers, NULL); > } > > +static const char *pid_file; > +static Notifier qemu_unlink_pidfile_notifier; > + > +static void qemu_unlink_pidfile(Notifier *n, void *data) > +{ > + if (pid_file) { > + unlink(pid_file); > + } > +} > + > bool machine_init_done; > > void qemu_add_machine_init_done_notifier(Notifier *notify) > @@ -2927,7 +2937,6 @@ int main(int argc, char **argv, char **envp) > const char *vga_model = NULL; > const char *qtest_chrdev = NULL; > const char *qtest_log = NULL; > - const char *pid_file = NULL; > const char *incoming = NULL; > bool userconfig = true; > bool nographic = false; > @@ -4001,6 +4010,9 @@ int main(int argc, char **argv, char **envp) > exit(1); > } > > + qemu_unlink_pidfile_notifier.notify = qemu_unlink_pidfile; > + qemu_add_exit_notifier(&qemu_unlink_pidfile_notifier); > + > if (qemu_init_main_loop(&main_loop_err)) { > error_report_err(main_loop_err); > exit(1); >