4

私のプログラム

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

常にnullを印刷しています。

しかし、私はすでにenvを設定しています

export LOG_FILE=/root/logにより、ユーザーが「nagios」である /etc/nagios/.profile ファイル

また、ターミナルで「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

しかし、2 行目をコメントアウトすると、次のようになります。

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