linux进程序列是什么意思,在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 G,名为“光标水平绝对值”(CHA),它的意思是“将光标移动到列n(默认值为1)。(不是ANSI.SYS)”(https://en.wikipedia.org/wiki/ANSI_escape_code)。

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中的哪个进程或库生成的?

我是否可以决定最终生成哪种序列,以及如何生成?

谢谢。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值