On Thu, Mar 15, 2012 at 1:37 PM, Anthony Liguori<address@hidden> wrote:
+ sock = socket(PF_UNIX, SOCK_STREAM, 0);
+ g_assert_no_errno(sock);
+
+ addr.sun_family = AF_UNIX;
+ snprintf(addr.sun_path, sizeof(addr.sun_path), "%s", socket_path);
+
+ pid = fork();
+ if (pid == 0) {
+ command = g_strdup_printf("%s "
+ "-qtest unix:%s,server,nowait "
+ "-qtest-log /dev/null "
+ "-pidfile %s "
+ "-machine accel=qtest "
+ "%s", qemu_binary, socket_path,
+ pid_file,
+ extra_args ?: "");
+
+ ret = system(command);
+ exit(ret);
+ g_free(command);
+ }
+
+ do {
+ sleep(1);
+ ret = connect(sock, (struct sockaddr *)&addr, sizeof(addr));
+ } while (ret == -1);
I believe Kevin suggested using -qtest unix:%s and creating the listen
socket in the test program rather than inside QEMU. The advantage is
that we never sleep(3), instead we accept(2) the connection from QEMU
and get going right away.