c - 在curses窗口中执行bash命令

标签 c bash ncurses curses

这个问题肯定存在,但我找不到它......

我有一个 (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/

相关文章:

c - Linux : Can Recvmsg be used to receive the IP_TOS of every incoming packet

python - 了解/usr/bin/env

linux - 如何仅在端口打开时终止在端口上运行的进程?

c - C编程中包含ncurses.h是否也包含stdio.h?

c - 在 Ncurses 中添加一行

sql - 用于传输表数据的 psql COPY 命令是否正确?

c - 从一台服务器监听多个端口

c - 我在 ncurses 中的窗口不显示任何内容

c - 我如何知道我是否使用 Windows API 来使用 ARM?

bash - 如何使用 `cat` 将文件内容传递给 `_values`(zsh 补全)