]> xenbits.xensource.com Git - qemu-upstream-4.5-testing.git/commitdiff
qtest: don't use system command to avoid double fork
authorAnthony Liguori <aliguori@us.ibm.com>
Tue, 16 Apr 2013 14:45:15 +0000 (09:45 -0500)
committerAnthony Liguori <aliguori@us.ibm.com>
Wed, 17 Apr 2013 15:26:04 +0000 (10:26 -0500)
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: Anthony Liguori <aliguori@us.ibm.com>
Message-id: 1366123521-4330-2-git-send-email-aliguori@us.ibm.com

tests/libqtest.c

index 389596a0553354fa7d7ea00175db8e717ec7fd5b..884f959992e359573282e35e2e77d8efd0aa400b 100644 (file)
@@ -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);