4

我的程序

int main(void){
printf("Log file location : %s\n", getenv("LOG_FILE"));
return 0;
}

总是打印空值。

但我已经设置了环境

/etc/nagios/.profile 文件,其中我的用户是“nagios”,通过export LOG_FILE=/root/log

当我在终端中执行“env”命令时,我也能看到同样的结果。

4

1 回答 1

4

getenv如果您忘记写入#include <stdlib.h>文件的标题,函数会显示非常有趣的结果。

例如,代码:

#include <stdio.h>
#include <stdlib.h>

int main(void){
  printf("Log file location : %s\n", getenv("LOG_FILE"));
  return 0;
}

效果很好:

LOG_FILE="log" ./a.out 
Log file location : log

但是当我注释掉第二行时,我得到:

LOG_FILE="log" ./a.out 
Segmentation fault (core dumped)
于 2013-04-12T10:46:45.243 回答