管道传输时如何确定终端宽度(对于较少的寻呼机?)

ELL*_*BLE 5 terminal posix pipe node.js

如果我的程序是通过命令行管道到另一个程序,有没有办法让我仍然确定其宽度?

我正在使用Node,如果这是相关的,虽然任何一般的POSIX解决方案都是受欢迎的(我可以弄清楚如何将它自己移植到我的环境中.)目前,我可以process.stdout.columns在Node中使用; 但那与之相关联process.stdout,在这种情况下是管道.

Tho*_*key 2

实际上,POSIX 没有定义ioctl用于获取窗口大小的 C 调用(请参阅标准)。但该TIOCGWINSZ调用(或类似的TIOCGSIZE)已广泛使用。Node 的检查可能依赖于这一点。

该包检查标准输出的宽度,如果失败,则检查标准错误:窗口大小(请参阅源代码)。

之前在《node.js 控制台有多宽?》中提出了类似的问题。