c - ssh terminal 插入终端程序名

标签 c ssh terminal

作为学术类(class)的一部分,我一直在使用 SSH 与我正在开发的操作系统进行通信。 (如果你好奇的话,请访问 www.xinu.cs.purdue.edu)我发现我糟糕的编程带来了一些非常奇怪的副作用,我希望有人能解释它是如何发生的。

我现在修复的错误是我在一个创建新线程的函数中乱序列出了参数)乱七八糟的参数是函数名称及其优先级,它们目前都不会影响操作(那里只有一个进程想要运行)。

我担心的是,当我将进程列表(其中包含无效名称和优先级)打印到控制台时,我的终端会将 my ssh 程序的名称插入 my 上的终端结束。 例如,这将是我终端的最后几行:

xsh $ ps
Pid Name             State Prio Ppid Stack Base Stack Ptr  Stack Size
--- ---------------- ----- ---- ---- ---------- ---------- ----------
  0 prnull           ready    0    0 0x0EFDEFFC 0x0EFDEEB0     8192
  1 rdsproc          susp   200    0 0x0EFDCFFC 0x0EFDCFC8    16384
  3 Main process     recv    20    2 0x0EFC8FFC 0x0EFC8F64    65536
  4 shell            recv    50    3 0x0EFB8FFC 0x0EFB8C7C     8192
  5 F                 curr  30548    4 0x0EFD8FFC 0x0EFD8D88     8192
xsh $ Bitvise SSH Client

我没有键入“Bitvise SSH 客户端”,但我可以将其退格(而且我无法删除 $ 之前的任何内容)。错误的进程列为 F。此外,如果我切换 ssh 客户端,则会插入我的新程序的名称(例如 puTTy)。此外,如果多个进程初始化错误,则每个错误进程插入一次终端程序名称。 (无论进程做什么,无论它处于什么状态,它都会发生)

错误程序可以通过 SSH 发送什么信息,使我的计算机打印出它的程序名称?我不记得有任何转义字符导致这种情况,而且我从未告诉另一台计算机我的终端程序叫什么。

最佳答案

您的错误程序名称可能包含 Ctrl-E 字符(ASCII 005,ENQ 字符)。这会导致 PuTTY 和其他终端仿真器以其程序名称进行应答。参见 this entryPuTTY FAQ , 例如。效果就像您输入了程序名称一样。

关于c - ssh terminal 插入终端程序名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41867063/

相关文章:

c - 我的 sqlite 数据库文件的位置在哪里?

objective-c - 在 iOS 上使用 libssh2 反向端口转发

bash - 如何使用 grep 提取不重复的字符串模式

python - 计算控制台Python中打印的行数

字符* (*车辆)[][5];动态分配

arrays - 在 C 中更改数组值会产生 "undefined reference to ' memset'"

linux - ERR_CONNECTION_TIMED_OUT 与 Lightsail Ubuntu 实例

shell - 无法在 MinGW/msys shell 或终端中键入 'e' 或 'P'

c - 避免使用 gettimeofday() API

成功运行 docker-compose 后 Bash 退出