提交 8a8fd637 编写于 作者: A Anthony Liguori

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: NAnthony Liguori <aliguori@us.ibm.com>
Message-id: 1366123521-4330-2-git-send-email-aliguori@us.ibm.com
上级 4aead692
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册