Kommando mit sytem(command) ausführen
- 
					
					
					
					
 gcc gibt Meldungen standardmäßig auf stderr aus. Probier bash mit &> als redirection operator. Das redirected dir stdout und stderr: 
 system("bash -c 'gcc -o LinuxCom LinuxCom.c &> File'")
 
- 
					
					
					
					
 popen() könnte helfen 
 
- 
					
					
					
					
 stderr schrieb: gcc gibt Meldungen standardmäßig auf stderr aus. Probier bash mit &> als redirection operator. Das redirected dir stdout und stderr: 
 system("bash -c 'gcc -o LinuxCom LinuxCom.c &> File'")..&> File schreibt auch wieder nur nach File wenn ich das via shell mache. Mit system() wird wieder nichts nach File geschrieben. gigg schrieb: popen() könnte helfen hier kommt wieder die Fehler Meldung "sh: 1: Syntax error: Bad fd number. 
 
- 
					
					
					
					
 Das liegt vermutlich daran, dass system() die Standartshell (Bourne Shell, sh) benutzt, du ansonsten aber bash. 
 Probiers mit "> File 2>&1", das ist sh-kompatibel und heißt:
 Erst die Ausgabe nach File umleiten und dann den Filedeskriptor 2 (stderr) auf den Filedeskriptor 1 (stdout, das jetzt nach File umgeleitet ist).edit: Oder alternativ einfach "2> File", wenn du nur die Fehlerausgabe umleiten willst. 
 
- 
					
					
					
					
 stderr schrieb: gcc gibt Meldungen standardmäßig auf stderr aus. Probier bash mit &> als redirection operator. Das redirected dir stdout und stderr: 
 system("bash -c 'gcc -o LinuxCom LinuxCom.c &> File'")system("bash -c 'gcc -o LinuxCom LinuxCom.c &> File'") funtioniert doch  Danke Dir! 
 
- 
					
					
					
					
 #include <stdio.h> int main(void) { FILE *fz; fz = popen("ls -al > File", "w"); if(fz == NULL) { fprintf(stderr, "Fehler bei popen\n"); return 1; } pclose(fz); return 0; }Also bei mir funktioniert das. Allerdings nicht: "ls -al >& File" Da bekomme ich auf der Kommandozeile schon den Fehler: 
 "illegal file descriptor name".Habe allerdings ksh und nicht bash. 
 
- 
					
					
					
					
 gigg schrieb: #include <stdio.h> int main(void) { FILE *fz; fz = popen("ls -al > File", "w"); if(fz == NULL) { fprintf(stderr, "Fehler bei popen\n"); return 1; } pclose(fz); return 0; }Also bei mir funktioniert das. Allerdings nicht: "ls -al >& File" Da bekomme ich auf der Kommandozeile schon den Fehler: 
 "illegal file descriptor name".Habe allerdings ksh und nicht bash. Habe mal mehrere Sachen ausprobiert. fz = popen("gcc -o LinuxCom LinuxCom.c > File", "w"); //nichts in File fz = popen("gcc -o LinuxCom LinuxCom.c &> File", "w");// nichts in File fz = popen("gcc -o LinuxCom LinuxCom.c >& File", "w");//-> sh: 1:Syntax erros: Bad fd number fz = popen("ls -al > File", "w");// hier Funtioniert esMit dem gcc klappt das irgendwie nicht. Mit 
 system("bash -c 'gcc -o LinuxCom LinuxCom.c &> File'")
 funtioniert das super.
 
- 
					
					
					
					
 Das liegt, wie oben schon steht, daran, dass "&>" eine bash-Erweiterung ist und nicht mit anderen sh's funktioniert. 
 Und daran, dass du die Error-Messages von gcc willst (ausgegeben auf FD 2: stderr), und daher "2>" (nur Errors werden umgeleitet) oder "> file 2>&1" (alles wird umgeleitet) oder "&>" (alles wird umgeleitet, nur bash) brauchst.
 
- 
					
					
					
					
 philipp2100 schrieb: Das liegt, wie oben schon steht, daran, dass "&>" eine bash-Erweiterung ist und nicht mit anderen sh's funktioniert. 
 Und daran, dass du die Error-Messages von gcc willst (ausgegeben auf FD 2: stderr), und daher "2>" (nur Errors werden umgeleitet) oder "> file 2>&1" (alles wird umgeleitet) oder "&>" (alles wird umgeleitet, nur bash) brauchst.Danke für die Infos, Linux ist für mich noch etwas Neuland. 
 
- 
					
					
					
					
 np, dafür sind wir ja da 