[C] Mehrfacher Aufruf von UNIX-Befehlen

Sinc

Mitglied
Hallo Jungs,

ich verarbeite mit folgenden Code UNIX-Befehle in einem C-Programm.
Das mache ich mit fopen, da system mir keine Ausgabe liefern konnte (oder ich weiss nicht wie).

C:
#include <stdio.h>

int main(int argc,char **argv)
{
	befehl();

	befehl();
}

int befehl()
{
	FILE *in;
	extern FILE *popen();
	char buffer[512];

	if (!(in = popen("date")))
	{
		exit(1);
	}
	while (fgets(buffer, sizeof(buffer), in) != NULL )
	{
		printf("Ausgabe: %s", buffer);
	}
	pclose(in);
}

Dieses Programm durchläuft jedoch den zweiten Funktionsaufruf nicht mehr.
Deswegen meine Frage: Wie kann ich in C mehrere UNIX-Befehle nacheinander, mit Ausgabe, verarbeiten?
 
Hallo,

das Programm sollte eigentlich gar nicht kompilieren...
Muesste es nicht heißen:
C:
in = popen("date", "r");

siehe dazu
Code:
man popen

Jedenfalls mit dieser Aenderung arbeitet es die beiden Befehle zumindest bei mir wie erwartet ab,
und gibt auch die Ausgabe korrekt aus...

Gruß

RedWing
 
Tschuldigung für den Ausdruck aber AAHHHRGGG!!einself

Danke für deine Hilfe.

Ich lasse den Thread vorläufig offen, da der Fehler nicht vollständig ausgemerzt ist.
Denn bei meinem Hauptprogramm, in der ich die Funktion benutze,
geht er zwar in die Funktion rein, ignoriert aber sauber das if und while.
Da ich den Quelltext meines Programms keinen zumuten möchte(sehr unsauber geschrieben),
lass ich hier Freiraum für wilde Spekulationen, wo das Problem liegen könnte.
 
Ok, nach langem rumgeschraube und seitdem ich mein Programm
sauber in Funktionen unterteilt habe, funktioniert auch der Aufruf von Befehlen.
Ich vermute das meine Variablen irgendwie nicht genug Speicherplatz reserviert haben
und die Variablen in den Funktionen anderen Speicher zugeteilt kriegen,
aber da spricht ein Laie.

Trotzdem danke an alle die, die sich mein Problem mal angeschaut haben.
 
Zurück