在linux(ubuntu)应用程序中哪个进程/库将退格转换为ansi转义序列,例如“ 33 [nG”?]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在linux(ubuntu)应用程序中哪个进程/库将退格转换为ansi转义序列,例如“ 33 [nG”?]相关的知识,希望对你有一定的参考价值。

我已经编写了在

linux

上运行的命令行应用程序(以下称为“ App-CLI”)。 App-CLI充当服务器,接受连接后,它将把子进程作为工作进程进行派生,并在每个此类子进程中分配pty(通过openpty函数)。在每个子进程中,我都使用诸如libedit之类的editline库来处理用户输入。 然后,在情况1中:

我使用

Win10]中的cmd / ConEmu / git bash之类的工具通过telnet或SSH连接APP-CLI,然后输入一些字符,例如“ abcdefg”,但双引号除外。然后,输入backspace

键,cmd工具中的屏幕在原点行的开头显示"[K"。因此,我在Linux中使用strate来监视App-CLI输出的内容
strace -e write=1,2 -e trate=write, -p {process_id}

并获得喜欢的结果

write(1, "\r\33[6G\33[K", 8) = 8

CSI序列

:组成

  • CSI n K,名称为“ Erase in Line”,表示“擦除行的一部分。如果n为0(或丢失),则从光标清除到行尾。如果n为1,则清除将光标移到该行的开头。如果n为2,则清除整行。光标位置不变。“
  • 似乎cmd或win10无法成功处理CHA序列?但我找不到有关通知(不可支持)的信息。

    然后,在情况2:

    我仍然在win10中使用cmd工具。但是我首先通过telnet登录linux系统,然后通过linux中的telnet连接到APP-CLI。我同样输入“ abcdefg”和

    backspace

    键,这次一切正常:屏幕上的输出显示“ abcdef”。 strace下的监视数据是:write(1, "\10\33[K", 4) = 4

    包含退格键的序列已更改!所以我想知道:

      这样的序列是由linux中的哪个进程或库生成的?
    1. 我是否可以决定最终生成哪种序列,以及如何生成?
    2. 谢谢。

    我已经编写了在Linux上运行的命令行应用程序(以下称为“ App-CLI”)。 App-CLI充当服务器,接受连接后,它将派生一个子进程作为工作进程,并且...

    答案
    这样的序列是由linux中的哪个进程或库生成的?

    以上是关于在linux(ubuntu)应用程序中哪个进程/库将退格转换为ansi转义序列,例如“ 33 [nG”?]的主要内容,如果未能解决你的问题,请参考以下文章

    crypt哪个库linux

    实验六 进程基础

    如何在Linux系统中察看进程占用的资源,Linux高手请进!

    iperf(ubuntu)

    实验六 进程基础

    实验六 进程基础