|
@@ -61,6 +61,7 @@
|
|
#include "trace/control.h"
|
|
#include "trace/control.h"
|
|
|
|
|
|
static const char *pid_file;
|
|
static const char *pid_file;
|
|
|
|
+static char *pid_file_realpath;
|
|
static volatile bool exit_requested = false;
|
|
static volatile bool exit_requested = false;
|
|
|
|
|
|
void qemu_system_killed(int signal, pid_t pid)
|
|
void qemu_system_killed(int signal, pid_t pid)
|
|
@@ -363,7 +364,7 @@ static void process_options(int argc, char *argv[], bool pre_init_pass)
|
|
|
|
|
|
static void pid_file_cleanup(void)
|
|
static void pid_file_cleanup(void)
|
|
{
|
|
{
|
|
- unlink(pid_file);
|
|
|
|
|
|
+ unlink(pid_file_realpath);
|
|
}
|
|
}
|
|
|
|
|
|
static void pid_file_init(void)
|
|
static void pid_file_init(void)
|
|
@@ -379,6 +380,14 @@ static void pid_file_init(void)
|
|
exit(EXIT_FAILURE);
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ pid_file_realpath = g_malloc(PATH_MAX);
|
|
|
|
+ if (!realpath(pid_file, pid_file_realpath)) {
|
|
|
|
+ error_report("cannot resolve PID file path: %s: %s",
|
|
|
|
+ pid_file, strerror(errno));
|
|
|
|
+ unlink(pid_file);
|
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
|
+ }
|
|
|
|
+
|
|
atexit(pid_file_cleanup);
|
|
atexit(pid_file_cleanup);
|
|
}
|
|
}
|
|
|
|
|