diff options
-rw-r--r-- | tests/libqtest.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/tests/libqtest.c b/tests/libqtest.c index 389596a..884f959 100644 --- a/tests/libqtest.c +++ b/tests/libqtest.c @@ -107,7 +107,7 @@ static pid_t qtest_qemu_pid(QTestState *s) QTestState *qtest_init(const char *extra_args) { QTestState *s; - int sock, qmpsock, ret, i; + int sock, qmpsock, i; gchar *pid_file; gchar *command; const char *qemu_binary; @@ -136,10 +136,8 @@ QTestState *qtest_init(const char *extra_args) "%s", qemu_binary, s->socket_path, s->qmp_socket_path, pid_file, extra_args ?: ""); - - ret = system(command); - exit(ret); - g_free(command); + execlp("/bin/sh", "sh", "-c", command, NULL); + exit(1); } s->fd = socket_accept(sock); @@ -169,9 +167,8 @@ void qtest_quit(QTestState *s) pid_t pid = qtest_qemu_pid(s); if (pid != -1) { - /* kill QEMU, but wait for the child created by us to run system() */ kill(pid, SIGTERM); - waitpid(s->child_pid, &status, 0); + waitpid(pid, &status, 0); } unlink(s->pid_file); |