作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试获取程序中的列数和行数。我正在使用以下代码来执行此操作:
...
char *cols = getenv("COLUMNS");
printf("cols: %s\n", cols);
char *lines = getenv("LINES");
printf("lines: %s\n", lines);
...
问题是,当我运行它时,两者都为空。使用其他环境变量(例如 PATH
或 USER
)运行它,效果很好。
我觉得奇怪的是,从同一个 shell 运行 echo $COLUMNS
和 echo $LINES
都工作正常。
为什么我的程序无法获取到这两个环境变量。
最佳答案
COLUMNS
和 LINES
由 shell 设置,但不导出,这意味着它们不会添加到随后执行的命令的环境中。(要验证这一点,请检查 /usr/bin/env
的输出:它将显示 PATH
和 USER
,但不会显示 COLUMNS
和 LINES
。)
在 bash shell 中,您可以调用 export VAR
来标记要导出的变量。
或者,参见 Getting terminal width in C?了解以编程方式获取终端宽度和高度的各种方法。
关于c - getenv 不适用于 COLUMNS 和 LINES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22588272/
我是一名优秀的程序员,十分优秀!