Tutaj napisałem program w języku C, który wykonuje plik hi.sh
przy użyciu połączenia system
.Pobierz zmienne środowiskowe za pomocą kodu C
Tutaj użyłem . ./hi.sh
więc chcę, aby wykonać ten skrypt w tej samej powłoce a następnie postarać się zmienną środowiskową za pomocą funkcji getenv, ale tutaj jestem coraz innego wyjścia z tego się spodziewałem.
Plik hi.sh
zawiera
export TEST=10
return
Środki gdy uruchamiam ten plik hi.sh
użyciu wywołania systemowego, jego export TEST
ustawia wartość do 10 w tej samej powłoki. Po tym, próbuję uzyskać tę wartość zmiennej, ale jego podana wartość NULL
.
Jeśli uruchomię ten skrypt ręcznie z poziomu konsoli, np. . ./hi.sh
, to działa poprawnie i otrzymuję 10 wartości TEST
przy użyciu funkcji getenv("TEST")
.
Kod:
#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);
}
}
wyjściowa:
Value is = (null)
Jak mogę wyeksportować zmienną TEST skorupek programu? Jeśli system()
wykonuje komendy w innej powłoce, to w jaki sposób mogę użyć kodu programu C, aby uzyskać zmienną środowiskową wyeksportowaną przez powłokę wywołaną przez wywołanie system()
?
Jak mogę osiągnąć ten cel? – user1089679
Jak mogę wyeksportować zmienną TEST do programu Shell? – user1089679
@ user1089679 Źródło swojego skryptu (skonfiguruj środowisko) przed uruchomieniem programu C. W ten sposób zaprojektowano zmienne środowiskowe, które mają być używane. –