【发布时间】:2013-01-25 22:55:16
【问题描述】:
我目前正在开发一个 ssh 程序,我希望能够通过网络完全控制终端。我的问题是,如果我向服务器发送命令以在终端中运行,我如何获得终端打印的输出?我看过很多帖子说要使用popen() 命令,但从我尝试过的情况来看,我不能使用它来更改目录和执行其他命令,只能使用ls 等简单的东西。除了将其发送到command > filetoholdcommand 之类的文件之外,还有其他方法可以从终端获取输出吗?提前致谢!
【问题讨论】:
-
I am currently working on a ssh program- 你的意思是你在写一个 SSH 客户端?或者您是否使用现有的 SSH 客户端在远程机器上执行命令?第二个选项不会让您的登录会话保持打开状态,因此对于每个新连接,CWD 都会重置为您的 HOMEDIR。 -
@jweyrich 我正在编写客户端和服务器。你能澄清一下你说它不会让我的登录会话保持打开是什么意思吗?
-
祝你顺利实现 SSH。
-
我以SSH为例,基本上我只是向服务器发送命令,它会执行命令,然后从终端发回输出等。
-
@HurricaneChris:这可能是一项非常复杂的任务。您需要处理各种终端控制序列和模式。假设是 VT100 兼容终端,您可以在VT100 User Guide 中阅读更多内容。第 3 章包含许多关于模式、光标位置、滚动等的详细信息。但我希望这不会让您气馁。