这个问题肯定存在,但我找不到它......
我有一个 (n)curses 窗口,我想将其专用于 bash shell(窗口 2),同时在窗口 1 中显示项目:
+-------------------------------+
| | |
| | |
| WINDOW 1 | WINDOW 2 |
| | |
| | |
+-----------------+-------------+
我将如何执行此操作?我需要它接受输入并显示输出,就像我刚刚打开另一个终端一样 - 如果可能的话 - 主机是自己的curses session (例如调用dialog命令)
我正在使用c。
最佳答案
tmux 和 screen 可以将终端窗口 segmentation 为多个 Pane ,这可以让您执行您所要求的操作。两者都使用 ncurses 的低级功能(terminfo 或 termcap)。自己在较高级别上完成这件事不会是一个短期项目,因为您必须管理伪终端连接以使 bash 运行等。
bash 期望在终端(如果您愿意,可以是“tty”)中运行,如果您将应用程序包装在它周围,则使其在窗口中运行,您必须为其输入/输出/错误提供连接,使它们像终端一样工作。这就是伪终端:系统调用的集合,允许程序设置、配置、操作和关闭与需要像终端一样运行的进程(例如 bash)的连接。
使用伪终端的程序包括(毫不奇怪)终端仿真器、特殊应用程序,例如 screen , luit (例如 sys.c file )。
以下是一些进一步阅读的链接:
关于c - 在curses窗口中执行bash命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47502223/