0

我正在尝试将控制台应用程序包装到像我一样的合成环境中,尽管多路复用器会这样做。但我注意到mc使用 S-Lang 库编写的(午夜指挥官)之类的应用程序即使stdin未连接到 TTY 也能够获得部分键盘状态。例如,cat /dev/zero|/usr/bin/mc完全不影响应用程序的可操作性。

我试图了解 mc 在 tmux 中是如何工作的,但我找不到这三个组件(mc、tmux 和 slang)的代码中发生魔法的地方。

问题是我如何以编程方式启动一个应用程序,mc以便我能够通过文件描述符与它进行交互,而实际的标准输入对于该应用程序根本不可用?

4

1 回答 1

1

他们正在检查他们的标准输入是否来自终端,使用isatty,如果没有关闭输入,则重新打开/dev/tty

除非应用程序在这种方法中采取特殊操作,否则管道输入会丢失。例如,它可以将数据读入缓冲区并用它做一些有用的事情。

于 2018-08-06T20:30:15.970 回答