G
genius0815
Grünschnabel
Hallo ich versuche/suche eine Funktion, die ein bashcommando ausführt und dann den Wert zurückgibt. Mit system erhalte ich nur den Fehlerwert zurück. Da hab ich popen gefunden, aber ich krieg es nicht hin:
cmd ist ein beliebiges Kommande der shell, der Rückgabewert soll ein Zeiger auf einen Char sein. Man weiss vorher nicht wie gross die Ausgabe des Kommandos ist. Den Rückgabewert will ich dann mit printf ausdrucken lassen beim Aufruf der Funktion.
Ich glaub das was ich hier zusammmen gebaut hab, ist völlig falsch, aber ich weiss es gerade nicht besser und hab die anderen Varianten schon gelöscht.
Danke für Hilfe
cmd ist ein beliebiges Kommande der shell, der Rückgabewert soll ein Zeiger auf einen Char sein. Man weiss vorher nicht wie gross die Ausgabe des Kommandos ist. Den Rückgabewert will ich dann mit printf ausdrucken lassen beim Aufruf der Funktion.
Ich glaub das was ich hier zusammmen gebaut hab, ist völlig falsch, aber ich weiss es gerade nicht besser und hab die anderen Varianten schon gelöscht.
Code:
char read_cmd(char *cmd)
{
const size_t s = 1024;
size_t bytes=8;
char buffer[s];
char *output;
FILE* fp = NULL;
int nRet;
size_t *t = malloc(0);
char **gptr = (char **)malloc(sizeof(char*));
*gptr = NULL;
if((fp = popen(cmd,"r")) == NULL){
printf ("Failure during read command output\n");
}
else {
fread( buffer, bytes, s, fp);
gptr = (char *)buffer;
**gptr = realloc(gptr, s);
return gptr;
}
}
Danke für Hilfe