【发布时间】: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 字符串。
-
啊,这肯定回答了一个问题。那么它是如何导致我的客户识别字符串被打印到终端上的呢?鉴于我只能删除该文本,并且只能删除该文本,似乎是我在终端上写了文本?