Autore: Fabio Di Matteo
Ultima revisione: 24/04/2008
Una proatica funzione che permette di fare quanto sopra detto:
Si usa di solito la funzione getenv
in questo modo:
char *MiaVarShell = getenv("HOME")
è necessario usare i seguenti include #include <stdio.h>
e #include <stdlib.h>
#include <string> std::string return_from_shell(std::string VarShell){ /*Ritorna il valore di una variabile bash */ std::string line ; VarShell= "echo " + VarShell+ " >/tmp/VarShell"; if (system(VarShell.c_str())==0 ){ ifstream VarShell("/tmp/VarShell",ios::in); if(!VarShell){ cerr<<"Problemi nell'apertura del file temporaneo."; }else{ getline(VarShell,line,'\n'); cout << "Valore variabile shell richiesta -> " << line << endl; } }else{ } unlink("/tmp/VarShell"); return line; }
La si usa cosi:
... std::string Valore= return_from_shell("$HOME"); ...
cambiando la riga:
VarShell= "echo " + VarShell+ " >/tmp/VarShell";
in
VarShell= VarShell+ " >/tmp/VarShell";
posso farmi ritornare qualunque output dallo standard output.