使用 ncurses 解释 bash 转义序列和其他字符

使用 ncurses 解释 bash 转义序列和其他字符

我想设计一个像 那样的终端多路复用器tmux,但不是那么复杂,是最小的东西,可以远程工作,使用ncurses.

在服务器端,工作流程如下:

  • 服务器进程总共创建 2 个进程:第一个进程将从fork父进程获取,forkpty第二个进程将从父进程获取。forkptyed 进程将是一个execlbash shell。第一个进程将使用调用返回的描述符与第二个进程对话forkpty()。第一个进程还将与客户端通信。它就像一个中间人。它将把来自客户的信息传递给forkpty教育流程,反之亦然。

在客户端,工作流程如下:

  • 客户端将创建一个线程,负责与服务器通信。里面的线程就会运行ncurses

问题是它ncurses不解析来自 bash 或其他特殊字符的转义序列。我拍了两张屏幕截图(这是在客户端)。在第一个中,从服务器接收的信息(在 shell 中运行的命令的输出)使用write()系统调用显示在标准输出上。在第二个屏幕截图中,显示了有关stdscr使用该功能的信息printw。这是两个屏幕截图之间代码的唯一区别。

我需要该printw功能,因为我想将终端拆分到多个窗口上。我如何才能ncurses轻松解释这些序列(以及那些特殊字符)?截图可以找到这里

tmuxPS:我还没有那么先进,无法完全甚至部分理解的源代码。

相关内容