【问题标题】:Is there any way to prevent ncurses based programs from running?有什么方法可以防止基于 ncurses 的程序运行?
【发布时间】:2011-05-31 14:14:53
【问题描述】:

你好,我正在构建一个远程 shell 服务器,用于在纯文本客户端和虚拟 shell 之间进行接口。

在使用常规 shell 命令时它可以完美运行,但人们在此之后尝试的第一件事是 vim,它会立即让我的服务器发疯,甚至无法远程关闭。

有什么方法可以检测基于 ncurses 的程序并阻止它们在我的特殊 shell 中运行?

(服务器是ruby,但任何系统命令都可以)

【问题讨论】:

    标签: ruby shell unix virtual ncurses


    【解决方案1】:

    您可以通过将 TERM 环境变量设置为正确的值来声明您的 shell 具有的功能。例如,如果您的 shell 与 vt100 终端具有相同的功能,请将 TERM 导出为正确的值,vim 等程序会尊重这一点。

    要在 vt100 模式下运行 vim,请尝试:

    TERM=vt100 vim
    

    你也可以试试:

    export TERM=dumb
    

    诀窍是找到与您正在创建的功能相对应的终端。有很多可供选择。在我的系统(Arch Linux)上,这给了我一长串选择:

    find /usr/share/terminfo
    

    您可能能够找到与您的程序可以处理的终端规范相对应的终端规范。

    或者,您可能需要考虑为 ansi 或 vt100 实现终端仿真:

    http://en.wikipedia.org/wiki/ANSI_escape_code

    http://www.termsys.demon.co.uk/vtansi.htm

    祝你好运!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2011-09-10
    • 1970-01-01
    • 2018-07-08
    相关资源
    最近更新 更多