【问题标题】:Execute bash commands in a curses window在 curses 窗口中执行 bash 命令
【发布时间】:2023-07-18 12:18:01
【问题描述】:

这个问题是肯定存在的,但是我在任何地方都找不到...

我有一个 (n)curses 窗口,我想将其专用于 bash shell(窗口 2),同时在窗口 1 中显示项目:

+-------------------------------+
|                 |             |
|                 |             |
|    WINDOW 1     |  WINDOW 2   |
|                 |             |
|                 |             |
+-----------------+-------------+

我将如何执行此操作?我需要它来接受输入并显示输出,就好像我刚刚打开了另一个终端一样 - 如果可能的话 - 主机是 自己的 诅咒会话(例如如果调用了对话框命令)

我正在使用 c。

【问题讨论】:

  • 这是一个需要解决的复杂问题。不确定有关 Stack Overflow 的问题是否会对您有所帮助。
  • @NikosC.我不是在找人给我答案,我只是想要一个方向。

标签: c bash ncurses curses


【解决方案1】:

tmux 和 screen 可以将终端窗口细分为多个窗格,这可以让你做你想要的。两者都使用 ncurses 的低级特性(terminfo 或 termcap)。自己做一个高水平的项目不会是一个短暂的项目,因为您必须管理伪终端连接以使 bash 运行等。

bash 期望在 终端 中运行(如果您愿意,可以是“tty”),如果您将应用程序包装在它周围,使其在 window 中运行,您必须为其输入/输出/错误提供连接,使它们像终端一样。这就是伪终端:一组系统调用,让程序设置、配置、操作和关闭与需要像终端一样工作的进程(例如 bash)的连接。

使用伪终端的程序包括(毫不奇怪)终端仿真器、特殊应用程序,例如 screenluit(例如 sys.c file)。

这里有一些进一步阅读的链接:

【讨论】:

  • 您能否提供有关伪终端连接的任何资源或简要说明?
最近更新 更多