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!
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
?
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.
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