car*_*lli 4 c environment-variables getenv
我正在尝试获取程序中的行数。我正在使用以下代码来做到这一点:
...
char *cols = getenv("COLUMNS");
printf("cols: %s\n", cols);
char *lines = getenv("LINES");
printf("lines: %s\n", lines);
...
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行此命令时,两者都为空。使用其他环境变量(例如PATH或)运行此命令USER可以正常工作。
我发现奇怪的是,从同一外壳运行echo $COLUMNS和运行echo $LINES都很好。
为什么我的程序无法获取这两个环境变量。
COLUMNS和LINES被设置由外壳,但不是出口,这意味着它们不被添加到随后执行的命令的环境。(要验证这一点,请检查的输出/usr/bin/env:它将显示PATH和USER,但不显示COLUMNS和LINES。)
在bash shell中,您可以调用export VAR标记要导出的变量。
或者,请参见使用C获取端子宽度? 以各种方式以编程方式获得端子的宽度和高度。