C++ でプログラミングする場合、個々の環境変数にgetenv
.
また、os x ターミナルでは、env
.
実行中の C++ プログラムで使用できる環境変数の完全なリストを取得したいと考えています。それらを一覧表示する ac/c++ 関数はありますか? env
つまり、私の C++ コードから呼び出す方法はありますか?
environ
グローバル変数を使用します。これは、形式 の文字列の配列へのヌル終了ポインターですname=value
。のミニチュア クローンを次に示しenv
ます。
#include <stdlib.h>
#include <stdio.h>
extern char **environ;
int main(int argc, char **argv) {
for(char **current = environ; *current; current++) {
puts(*current);
}
return EXIT_SUCCESS;
}
移植性のないenvp引数を使用して、次のことができる場合がありますmain
。
int main(int argc,char* argv[], char** envp)
おまけとして、他のOSが提供する情報を提供するAppleOSX
を持っているようです:
int main(int argc, char **argv, char **envp, char **apple)
しかし、それは何のために使われますか?Apple は、apple ベクトルを使用して、必要な「隠し」パラメータを任意のプログラムに渡すことができます。そして、彼らも実際にそれを使用しています。現在、apple[0] には、実行中のバイナリがディスク上で見つかったパスが含まれています。何て言うの?apple[0] は argv[0] とどう違うのですか? 違いは、execve(2) が呼び出されたときに argv[0] を任意の値に設定できることです。たとえば、シェルは多くの場合、argv[0] の最初の文字を - にしてログイン シェルを開始することで、ログイン シェルと通常のシェルを区別します。
system
おっと、端末コマンドを実行できることを忘れていました。
このスニペットは、私が必要とするものを提供します:
std::cout << "List of environment variables: << std::endl;
system("env");