【问题标题】:ssh terminal inserting terminal program namessh终端插入终端程序名称
【发布时间】:2017-06-11 13:07:09
【问题描述】:

作为学术课程的一部分,我一直在使用 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 Client”,但我可以退格(而且我不能删除 $ 之前的任何内容)。出错的进程被列为 F。此外,如果我切换 ssh 客户端,则会插入我的新程序名称(例如 puTTy)。此外,如果多个进程初始化错误,则每个错误进程都会插入一次终端程序名称。 (无论进程做什么和处于什么状态,它都会发生)

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

【问题讨论】:

  • 客户端和服务器标识字符串的交换是正常 ssh 连接设置的一部分。建立连接后,无需通过通道发送任何内容即可获取 ID 字符串。
  • 啊,这肯定回答了一个问题。那么它是如何导致我的客户识别字符串被打印到终端上的呢?鉴于我只能删除该文本,并且只能删除该文本,似乎是我在终端上写了文本?

标签: c ssh terminal


【解决方案1】:

您不正确的程序名称可能包含 Ctrl-E 字符(ASCII 005,ENQ 字符)。这会导致 PuTTY 和其他终端仿真器使用它们的程序名称来回答。例如,参见PuTTY FAQ 中的this entry。效果就像您输入了程序的名称一样。

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 2012-05-18
    • 2014-02-09
    • 2013-12-31
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 2015-01-13
    • 2012-01-23
    相关资源
    最近更新 更多