【发布时间】:2012-04-15 16:17:46
【问题描述】:
我知道通过stty -a 命令很容易计算出终端的尺寸参数。使用本地 CLI PHP 脚本时,通过system() 左右获取该输出完全没有问题。
但我正在通过从 ssh 命令启动的 php 脚本尝试相同的操作。可悲的是,stty 返回的只是:
stty: standard input: Invalid argument.
调用代码是:
exec('stty -a | head -n 1', $query);
echo $query[0];
所以问题是:如果我可以输出到终端并从中读取输入(例如,fread() 从 STDIN 和 fwrite() 到 PHP 中的 STDOUT,stty 不应该也有有效的 STDIN 和 STDOUT 吗?
【问题讨论】:
-
我应该提到我试图避免使用像 ncurses 这样的东西来获取屏幕大小。
-
不是 100% 确定,但是对终端大小执行 exec 可能会导致大小不正确,因为它将是脚本允许的大小,而不是执行它的终端。
-
这将导致请求未分配的终端大小,因为 SSH 本身不会为直接调用的命令分配终端。嗯。
-
您可以尝试 exec('tput cols') 和 exec('tput lines'),这可能会提供一些信息,再次使用上述免责声明。
-
另外,看起来会是 ncurses。
标签: php ssh command-line-interface stty