Portál AbcLinuxu, 16. července 2025 07:54
Ahojte skusal som pustat skript cez prikaz source.
V skripte je iba TEST=1500.
Po skonceni mi echo $TEST vypise hodnotu premennej test.
Skusal som ale nacitat tuto premennu do c++ programu a tam mi vyhodi ze je prazdna.
c program:
char * TEST;
system(" /bin/bash -c \"source /home/test.sh\"");
TEST = getenv("TEST");
if (TEST == NULL) {
cout << "Premenna TEST nema ziadnu hodnotu" << endl;
}
else{
cout << "Hodnota premennej je : " << TEST << endl;
}
Kde robim chybu ked mi nenacita danu premmennu aj ked ju v bashi pozna ?
Dakujem
#include <stdio.h> #include <stdlib.h> int main( int argc, char *argv[] ) { FILE *fp; int status; char buff[1035]; fp = popen("/bin/bash -c 'TEST=1500;echo $TEST'", "r"); if (fp == NULL) { printf("Failed to run command\n" ); exit; } while (fgets(buff, sizeof(buff)-1, fp) != NULL) { printf("%s", buff); } pclose(fp); return 0; }nejsem zrovna céčkař, ale mohlo by to jako nakopnutí stačit
system(" /bin/bash -c \". /home/test.sh\"");
Sam jsem zvedavej jestli to pomuze.
je mozne aby sa z toho bash scriptu dala vyvolat aj funkcia, ktora je definovana v c++ ?
napr. na vypis chabovej hlasky a ukoncenie programu, a v pripade ze na konci bude return 0; v tom skripte tak cely krrk bude povazovani za spravny a bude program pokracovat dalej ?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.