Assumendo di parlare di popen usata col secondo parametro pari a "r+", il caso in esame e uno di quelli piu` comuni (e faciliOriginariamente inviato da Guglie
grazie del suggerimento Ikitt: ho cercato un po' in rete e ho trovato un esempio, e adattandolo funziona
però non ho bene capito come funziona (sono andato un po' a tentativi..)
).
Sostanzialmente, se popen() ha successo, ritorna al chiamante un FILE da cui si puo` leggere normalmente con fgets() o fread(). L'unica differenza da un FILE tradizionale e` che, come desiderato, quel FILE (fittizio) contiene l'output del comando desiderato.
Il punto, appunto (!) e` che si puo` leggere e scrivere normalmente usando fread & co
Forse, dipende da cosa stampa a video "get_battery_percent",e credo che il codice si possa scrivere meglio
e cosa devi fare il programma chiamante col valore ottenuto.
Non vedo errori (disclaimer: sono sveglio da poco e senza caffel'output così ècodice:FILE * temp_file; char perc[53]; int lastchar; temp_file = popen("get_battery_percent", "r"); lastchar = fread(perc, 1, 53, temp_file); perc[lastchar-1]=' '; perc[lastchar]='%'; perc[lastchar+1] = '\0'; cout << "Percentuale " << perc << endl; cout << "Fine"; pclose(temp_file);
che è quello che voglio: alla variabile perc aggiungo lo spazio e "%" e non c'è il ritorno a capo (nello script originale c'era soltanto perc[lastchar] = '\0' )codice:Percentuale 85 % Fine), mi pare "solo" un errore di "off by one" potenziale in "perc[lastchar+1 = '\0'".