【问题标题】:How can I determine the terminal width when piped (to a pager like less?)如何确定管道时的终端宽度(到更少的寻呼机?)
【发布时间】:2015-07-27 23:37:30
【问题描述】:

如果我的程序在命令行中通过管道传输到另一个程序,我还有什么方法可以确定其宽度吗?

我在 Node 中工作,如果相关的话,尽管欢迎任何通用的 POSIX 解决方案(我可以自己弄清楚如何将它移植到我的环境中。)目前,我可以在 Node 中使用process.stdout.columns;但这与process.stdout 相关联,在这种情况下是通过管道传输的。

【问题讨论】:

  • 检查环境变量WIDTHHEIGHT是否存在。

标签: node.js terminal pipe posix


【解决方案1】:

实际上,POSIX 没有定义用于获取窗口大小的 C ioctl 调用(参见 standard)。但是TIOCGWINSZ 调用(或类似的TIOCGSIZE)是广泛可用的。 Node 在其检查中可能依赖于它。

这个包检查标准输出的宽度,如果失败,检查标准错误:window-size(见source code)。

之前在 How wide is the node.js console?

中提出了类似的问题

【讨论】:

  • 终于有时间回来看看这个。不幸的是,tty.getWindowSize 在我的节点中不存在;在寻呼机内部调用时,.getWindowSize 不存在。同时,process.stdout.columns 当然是未定义的,因为它与管道相关联。因此,该软件包的方法是行不通的。 /=
  • 也许我可以直接用TIOCGWINSZTIOCGSIZE 做点什么? 那些甚至在管道时定义了吗?我想我必须编写一个 C 扩展。小时。
猜你喜欢
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
相关资源
最近更新 更多