Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何以编程方式向QEMU来宾发送键盘事件?_C_Qemu - Fatal编程技术网

C 如何以编程方式向QEMU来宾发送键盘事件?

C 如何以编程方式向QEMU来宾发送键盘事件?,c,qemu,C,Qemu,假设我有一些预先存在的iso(例如,alpine linux)。我从 qemu-system-x86_64 -enable-kvm -cdrom alpine-virt-3.5.0-x86_64.iso 此时,我想执行一些设置(并避免手动执行) 我想,实现这一点的一种方法是使用xdotool,但这不是很方便,因为整个Xorg会话都会被一个QEMU客户机占用 也许有更好的办法?可以通过QMP或QEMU C API完成吗?一种可能的方法是将控制台设置为串行,并告诉QEMU将来宾系统的串行端口重定向

假设我有一些预先存在的iso(例如,alpine linux)。我从

qemu-system-x86_64 -enable-kvm -cdrom alpine-virt-3.5.0-x86_64.iso
此时,我想执行一些设置(并避免手动执行)

我想,实现这一点的一种方法是使用xdotool,但这不是很方便,因为整个Xorg会话都会被一个QEMU客户机占用


也许有更好的办法?可以通过QMP或QEMU C API完成吗?

一种可能的方法是将控制台设置为串行,并告诉QEMU将来宾系统的串行端口重定向到主机的stdio:

qemu-system-x86_64 -enable-kvm -cdrom alpine-virt-3.5.0-x86_64.iso -append "console=ttyS0" -serial stdio
然后,您可以尝试在qemu进程的stdio上进行自定义设置。或者,您也可以使用侦听套接字并连接到它:
-serial tcp::12345,server


最后,您应该努力使用用于自动设置的可能现有机制,例如Debian GNU/Linux等的预存文件,因为这样做可能非常容易出错。

一种可能的方法是将控制台设置为串行,并告诉qemu将来宾系统的串行端口重定向到主机的stdio:

qemu-system-x86_64 -enable-kvm -cdrom alpine-virt-3.5.0-x86_64.iso -append "console=ttyS0" -serial stdio
然后,您可以尝试在qemu进程的stdio上进行自定义设置。或者,您也可以使用侦听套接字并连接到它:
-serial tcp::12345,server

最后,您应该努力使用可能的现有机制来进行自动设置,例如Debian GNU/Linux等的预存文件,因为这样做可能非常容易出错