Prof. Dr. Franz Schweiggert Institut für Angewandte Informationsverarbeitung 29. April 2009
Michael Mattes Blatt 2


[c]



Systemnahe Software (II)
im Sommersemester 2009



Abgabetermin: 06. Mai 2009

Bitte seien Sie beim Umgang mit fork() sehr vorsichtig! Lesen und beachten Sie die Regeln zum Forken auf der Vorlesungs-Webseite!

5 ``Killerspiele'', Prozesslawinen und
Sicherheitsvorkehrungen (4 Punkte)

Erklären Sie Ihrem Tutor, welche Sicherheitsvorkehrungen Sie beim Forken treffen, wie Sie einzelne Prozesse ``von außen'' beenden und wie Sie verfahren, sollten Sie doch mal eine Prozesslawine ausgelöst haben. Was bedeuten die Argumente des Shellkommandos kill -9 -1?

6 Andere Programme ausführen (8 Punkte)

Schauen Sie sich das auf der Webseite verfügbare Programm exec.c an. Führen Sie das Programm aus, betrachten Sie dessen Exit-Status und erklären Sie, warum dieser Wert zustande kommt. Erweitern Sie das Programm um passende Fehlerbehandlungen und verlagern Sie den Aufruf von ``execlp'' in einen Kindprozess, während der Elternprozess auf das Kind mit Hilfe von wait(3c) wartet. In dieser Aufgabe muss der Elternprozess den Exit-Status des Kindes nicht abfragen - das Warten alleine genügt.

7 Zombieprozesse (8 Punkte)

Starten Sie das auf der Webseite verfügbare Programm zombie.c im Hintergrund. Schauen Sie in der Prozesstabelle nach (beispielsweise mit ps -ylu username), welchen Status beide Prozesse vor und nach Beendigung des Elternprozesses haben. Wann existieren Zombieprozesse und warum? Erweitern Sie das Programm, damit Zombieprozesse vermieden werden.

Viel Erfolg!



Michael Mattes 2009-04-29