こんにちは、もがちゃんです。
C言語でプログラムを作っていて、環境に応じて動作を変えれたらと思ったことはありませんか?
今回の記事では、環境に応じてプログラムの動作を変えたい場合に使用するgetenvの使い方を簡単なサンプルソースとともに説明します。
目次
getenvの構文
#include <stdlib.h>
char *getenv(const char *name);
getenvの説明
getenvは、nameで指定された文字列と一致する環境変数の値を返却する。
getenv関数は、ホスト環境が提供する環境の並び(environment list)の中で、nameが指す文字列と一致する文字列を探索する。
JISX3010 プログラム言語C
name
取得したい環境変数の名前(文字列)が格納されている場所へのポインタを指定します。
返却値
nameで指定された環境変数名と一致する環境変数が
存在する場合、環境変数の値を指す文字列のポインタを返す。
存在しない場合、NULLポインタを返す。
getenvの使い方サンプル
getenvを使ったサンプルソースと実行結果を紹介します
#include <stdio.h>
#include <stdlib.h>
/*
* getenvの使い方サンプル
*/
int main(int argc, char *argv[]) {
char *envp = getenv("DEBUG");
int debug = 0;
if (envp != NULL) {
// 環境変数 DEBUG の定義がある場合、debug = 1
fprintf(stdout, "DEBUG[%s]\n", envp);
debug = 1;
}
if (debug) {
// debug = 1の時だけ
fprintf(stdout, "DEBUG:%s\n", "<<<debug start>>>");
}
fprintf(stdout, "getenv sample program!\n");
if (debug) {
// debug = 1の時だけ
fprintf(stdout, "DEBUG:%s\n", "<<<program end>>>");
}
return 0;
}
getenvのまとめ
環境変数の値を取得したい場合は、getenv関数で取得できます。
getenv関数のパラメータには、取得したい環境変数名(文字列)のポインタを指定します。
指定した名前の環境変数が存在しない場合は、NULLポインタが返却されます。
getenv関数を使う事で以下のような事も出来ます。
getenv関数の使い道
- ユーザー毎に動作を変える
- 動かすOS事に動作を変える
- 動かす環境に応じて動作を変える
同様のことは、ファイルを使用することでも実現できますが、環境変数の場合ファイルを作成して配置する必要もなく手軽に実現できる。
注意点
環境変数に似ているものに、シェル変数というのがあるので環境変数を設定する場合には、注意が必要です。(特にUnix系のOS)