Commit 8a8fd637 authored by Anthony Liguori's avatar Anthony Liguori
Browse files

qtest: don't use system command to avoid double fork



Currently we waitpid on the child process we spawn off that does
nothing more than system() another process.  While this does not
appear to be incorrect, it's wasteful and confusing so get rid of
it.

Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
Message-id: 1366123521-4330-2-git-send-email-aliguori@us.ibm.com
parent 4aead692
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -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);