Vous n'êtes pas identifié.
Voilà je programme des petits trucs en C/C++, et j'aurais besoin de faire des appels système, genre system("liste=$(ls -l)") voyez-vous... Le TRUC, c'est que j'arrive pas à récupérer la valeur de $liste après. J'ai bien essayé de mettre un export devant, d'utiliser getenv() et tout ça, mais ça n'a pas l'air de fonctionner. Il parait que c'est une histoire de session de konsole. Quelqu'un peut-il m'aider (si j'ai été assez clair), puis-je passer par une variable "qui marche" de type $PATH, sans que j'ai à la rajouter dans un fichier de config de console ?
Hors ligne
Salut,
Voir popen() sous google.
https://lists.dulug.duke.edu/pipermail/ … 10270.html
Un truc du style :
using namespace std; int main (int argc, char *argv[]) { FILE* tmp = popen("ls -l > ma_liste.txt", "r"); pclose(FILE *tmp) FILE* tmp2 = open("ma_liste.txt", "r"); char c; while(fread(&c, sizeof(char), 1, tmp2)) { cout << c; } fclose(tmp2); return 0; }
A+
Hors ligne
Mamie !
Je vais tester ça, mais si ça marche, c'est la réponse la plus rapide de l'Histoire !!!
en tout cas merci
Hors ligne
de rien .
Hors ligne
argh !
attends j'avais pas vu ton bout de code, mais tu te sers
d'un fichier !
J'avais déjà mis ça en place du genre :
system("pgrep proc_bidon>resultat.txt")
et ouvert resultat.txt après, bien sûr.
Mais le probleme, c'est que j'aimerai ne pas passer par
une écriture dans la table des fichiers si possible, i.e : faire
tout à la volée. Demander qqchose en appel système et
extraire la réponse, sans passer par un fichier texte.
Hors ligne
C'est bon ok, je ne passe plus par le "ma_liste.txt".
Probleme résolu.
Merci encore, Jean
Hors ligne
Salut,
C'est possible de lire directement dans le flux ouvert depuis popen.
FILE* tmp = popen("ls -l", "r"); char c; while(fread(&c, sizeof(char), 1, tmp)) { cout << c; } pclose(tmp);
A+
Hors ligne