Universität Ulm -Sektion Angewandte Informationsverarbeitung 4.Übungsblatt (18.05.99 bis 01.06.99) zur Vorlesung Systemnahe Software II (SS 99)




Aufgabe 1 (10 Punkte)

Implementieren Sie die UNIX-C-Funktionen FILE *popen(char *cmd, char *mode) und int pclose(FILE *fp). (Was machen die? Siehe man popen oder kommt in die Übungen :-))
Sie können bei Aufgabe 1 - im Gegensatz zu Aufgabe 2 - davon ausgehen, daß popen() nur einmal (gleichzeitig) in dem aufrufenden C-Programm aktiv ist. So wie im nachstehendem Beispiel:

#include <stdio.h>

main() 
{	FILE *fp1, *fp2; 
	char buf[100];

	fp1 = popen("ls -la", "r"); 
	while (fgets(buf, sizeof(buf), fp1))
		printf(buf);
	pclose(fp1); 
	fp2 = popen("sort", "w"); 
	...
	pclose(fp2); 

}


Aufgabe 2 (10 Punkte)

Erweitern Sie Ihre Lösung von Aufgabe 1 dahingehend, daß popen() nun mehrmals (verschachtelt) in einem C-Programm aufgerufen werden kann. Z.B.:


#include <stdio.h>

main() 
{   FILE *fp1, *fp2; 
	... 
	fp1 = popen("ls -la", "r"); 
	fp2 = popen("sort", "w"); 
	... 
	pclose(fp1); 
	pclose(fp2); 
	...
}

Hinweis:

Die folgenden Funktionen brauchen sie sicher, bzw. helfen Ihnen zu einer "einfachen" Lösung:

execl(), dup(), fdopen(), fileno(), waitpid()


Hier finden Sie die Beispiele aus den Übungen.