为 System.in 设置环境
我正在为运行 RedHat 的服务器设计一个控制台应用程序。最终用户应该能够在他们选择的任何终端上运行此应用程序。(例如;Gnome Terminal,Putty SSH / Telnet,MS Telnet Client等)。
在大多数终端应用程序中,没有错,但是当我从MS telnet会话启动程序时,我注意到了我的特殊输入并完全搞砸了。退格键将写入屏幕,其他键也会写胡言乱语。System.in
System.console()
^H
我已经对它进行了足够的黑客攻击,我可以让它始终如一地工作,但我确信我正在做的事情是粗暴的:
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);
}
对于不支持的终端,这里会不会有问题?我注意到 Microsoft Telnet 客户端不允许在开始会话之前将类型设置为。但是,会话启动后,设置似乎可以解决问题。xterm
TERM
xterm
TERM=xterm
大多数控制台应用程序如何解决此问题?