首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为System.in设置环境

为System.in设置环境
EN

Stack Overflow用户
提问于 2016-02-09 22:49:15
回答 1查看 953关注 0票数 33

我正在为运行RedHat的服务器设计一个控制台应用程序。最终用户应该能够运行这个应用程序与他们选择的任何终端。(例如: Gnome终端、Putty SSH/ Telnet、MS Telnet客户端等)。

在大多数终端应用程序中没有错误,但是当我从MS远程登录会话启动我的程序时,我注意到我的System.inSystem.console()的特殊输入完全混乱了。退格键会把^H写到屏幕上,其他键也会写乱码。

我已经对它做了足够的修改,所以我可以让它一直工作,但我确信我正在做的事情是粗俗的:

代码语言:javascript
复制
if (!System.getenv("TERM").equals("xterm"))
{
    System.out.println("\nWARNING: The TERM type is now set to xterm\n");
    final String[] cmd = { "/bin/sh", "-c", "export TERM=xterm" };
    Runtime.getRuntime().exec(cmd);
}

对于不支持xterm的终端,这里会有问题吗?我注意到Microsoft Telnet客户端不允许您在开始会话之前将TERM类型设置为xterm。但是,一旦会话启动,设置TERM=xterm似乎就可以解决问题。

大多数控制台应用程序是如何解决这个问题的?

EN

回答 1

Stack Overflow用户

发布于 2016-03-15 02:15:10

你应该看看这两篇文章,因为它们与你正在做的事情有关。

check env variable

set environment variable

当您在Unix服务器上运行控制台时,我还建议您查看Unix命令expect,该命令允许您读取控制台应用程序中的输入,并根据用户的输入执行操作。

以下是该命令用法的一些示例。

sample Expect usages

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35295010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档