Ich versuche, eine Funktion zu erstellen, die einen Shell-Befehl als Argument nimmt, mit fork einen neuen Prozess erstellt, der den Befehl ausführt. Ich möchte auch die Standardausgabe des Befehls umleiten, damit der Aufrufer der Funktion sie mit einem FILE*-Zeiger lesen kann.
static FILE* runCommand(char* command){
int pfd[2];
if(pipe(pfd)<0)
return NULL;
if(pid=fork()==0){ //Kindprozess
close(pfd[0]);
dup2(pfd[1],1); //Ausgabe zum Schreiben in Pipe umleiten
execlp(command,(char*)0);
}
close(pfd[1]);
//hier einen Dateizeiger/-descriptor zurückgeben?
}
Ich bin mir nicht sicher, wie ich einen Dateizeiger zurückgeben kann, der zum Lesen der Ausgabe des Befehls verwendet werden kann. Ist das der richtige Weg, einen Befehl in der Shell auszuführen?
ps. Ich habe über popen gelesen, aber aus einem guten Grund kann ich es nicht verwenden, sodass ich diese Funktionalität selbst implementieren muss.
Danke