ここではsystem
呼び出しを使用してhi.sh
ファイルを実行するCプログラムを作成しました。ここでCコードを使用して環境変数を取得
私はので、私は同じシェル にこのスクリプトを実行してからのgetenv関数を使用して環境変数を取得するために試してみたいが、ここで私は私が期待したものとは異なる出力を取得しています. ./hi.sh
を使用。
hi.sh
ファイルは、私は同じシェルで10にシステムコール、そのexport TEST
セット値を使用して、このhi.sh
ファイルを実行すると
export TEST=10
return
の意味が含まれています。 この後、私はこの変数の値を取得しようとしていますが、与えられたNULL
の値です。
そして、私は. ./hi.sh
のように、コンソールから手動でこのスクリプトを実行する場合、それは正常に動作し、私はgetenv("TEST")
機能を使用してTEST
の10値を取得します。
コード:
#include <stdio.h>
int main()
{
system(". ./hi.sh");
char *errcode;
char *env = "TEST";
int errCode;
errcode = getenv(env);
printf("Value is = %s\n",errcode);
if (errcode != NULL) {
errCode =atoi(errcode);
printf("Value is = %d\n",errCode);
}
}
出力:
Value is = (null)
私はプログラムシェルでTEST変数をエクスポートすることができますどのように? system()
が別のシェルでコマンドを実行する場合、Cプログラムコードを使用して、system()
呼び出しによって呼び出されるシェルによってエクスポートされる環境変数を取得する方法はありますか?
この目標を達成するにはどうすればよいですか? – user1089679
TEST変数をプログラムシェルにどのようにエクスポートできますか? – user1089679
@ user1089679 Cプログラムを実行する前に、スクリプトを用意してください(環境を設定してください)。環境変数はどのように使用するように設計されています。 –