【问题标题】:How can I find the number of terminal columns from a C/C++ program? [duplicate]如何从 C/C++ 程序中找到终端列的数量? [复制]
【发布时间】:2011-10-03 04:15:53
【问题描述】:

可能重复:
Getting terminal width in C?

在 Linux 和 OS X 上,我的 shell 报告 $COLUMNS 具有终端窗口的宽度 -- 调整窗口大小将调整这个 shell 变量。

但在我的 C/C++ 程序中,getenv("COLUMNS") 似乎找不到变量。

有人解释一下吗?或者让我的 C++ 程序计算出它正在运行的终端的宽度的替代建议(一些帮助消息自动换行)?

【问题讨论】:

  • $LINES$COLUMNSshell 变量,而不是 environment 变量。

标签: c++ c formatting terminal


【解决方案1】:

大概是这样的:

#include <sys/ioctl.h>
#include <stdio.h>

int main()
{
    struct winsize w;
    ioctl(0, TIOCGWINSZ, &w);

    printf("lines %d\n", w.ws_row);
    printf("columns %d\n", w.ws_col);
    return 0;
}

直接来自:Getting terminal width in C?

【讨论】:

  • 顺便说一句,这不是“可移植的”(POSIX 未指定),但在实践中几乎无处不在。
  • 在我的情况下效果很好,谢谢!
  • 如果您想处理窗口大小的调整,您还必须处理 SIGWINCH 信号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 2013-10-24
  • 2020-07-24
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多