
一些背景知识
Qemu 有一个很棒的功能,它允许您将其 stdio 流连接到客户机上的串行端口。这允许您将 QEMU 的 stdio 流连接到客户机上的 TTY shell,并以与 SSH 会话非常相似的方式与其交互。但是,我通过 NuShell 运行它,它似乎做了某种缓冲以尝试解析输出。结果是我无法与客户机交互。该命令仅在 QEMU 关闭后返回其输出。缓冲区被释放,我可以看到所有内容,包括我输入到无响应 shell 中的内容。
但是在 Bash 中运行同样的东西(即使通过 -c 标志从 nushell 调用 bash,并相应地转换 QEMU 调用),我得到了交互式 shell。
我的问题
我希望在 NuShell 中实现这一点。我不太了解 TTY 与管道输出的区别,但显然 Bash 和 Qemu 对待它们的 stdio 流的方式不同。我希望找到某种解决方案,让我能够继续在 NuShell 中使用 qemu。
我怎样才能强制 nushell 停止缓冲 qemu 的输出,或者管道qemu 进程通过某种程序,其行为类似于 bash,因为它不缓冲任何东西?