我希望既能通过命令行与系统交互,又能同时将输出输出到文件中。
如果我做:
qemu-sysem-x86_64 -serial stdio |& tee file
Run Code Online (Sandbox Code Playgroud)
然后它大部分工作,但我想避免任何 Bash 操作,让 QEMU 为我做繁重的工作。例如,我正在使用 Python,在tee那里实现一个可靠的并不是那么简单。
如果我做:
qemu-sysem-x86_64 -serial file:myfile
Run Code Online (Sandbox Code Playgroud)
它重定向到文件,我无法提供任何输入。
有没有一种方法,以“结合”都file:与stdio一个单一的-serial?
多个-serial条目只是创建多个串行端口,而不是修改一个。
如果它与 telnet 一起使用,我也很感兴趣:
-serial tcp::1234,server,nowait
Run Code Online (Sandbox Code Playgroud)
http://lists.nongnu.org/archive/html/qemu-discuss/2018-11/msg00011.html
最近,我遇到了完全相同的问题并找到了解决方案:
据QEMU 3.1.0的文件,你可以使用一个chardev带有选项stdio,并logfile和您重定向serial到它。
qemu-system-x86_64 -chardev stdio,id=char0,logfile=serial.log,signal=off \
-serial chardev:char0
Run Code Online (Sandbox Code Playgroud)
此外,如果您在 中使用mux=on选项chardev,您可以同时将监视器 ( mon)、另一个serial或其他支持chardev后端的接口重定向到其中:
qemu-system-x86_64 -chardev stdio,id=char0,mux=on,logfile=serial.log,signal=off \
-serial chardev:char0 -mon chardev=char0
Run Code Online (Sandbox Code Playgroud)
请参阅文档中的示例。上面的链接。