getenv不适用于列和行

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都很好。

为什么我的程序无法获取这两个环境变量。

Mar*_*n R 5

COLUMNSLINES设置由外壳,但不是出口,这意味着它们不被添加到随后执行的命令的环境。(要验证这一点,请检查的输出/usr/bin/env:它将显示PATHUSER,但不显示COLUMNSLINES。)

在bash shell中,您可以调用export VAR标记要导出的变量。

或者,请参见使用C获取端子宽度? 以各种方式以编程方式获得端子的宽度和高度。