Auufgabe 7d: Dokumentation

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Auufgabe 7d: Dokumentation
Bei mir ändert sich da nix. Zumindest auf Ebene der Shell. Hab ich da was falsch gemacht, oder soll ich dokumentieren warum das so ist - oder bin ich zu blöd den Unterschied zu erkennen?
P.s: Ich kann nur einen Unterschied bei der Verwendung von CTRL-C feststellen…


Es ist auch tatsächlich CTRL+C gemeint. Die Aufgabe ist an der Stelle etwas missverständlich formuliert, das ist die letzten Jahre aber wohl niemandem aufgefallen :slight_smile:


Ok. Weil ich ne knappe Stunde pids eingetippt hab um sigints durch die gegend zu schicken. :frowning:


wie gesagt auf die Idee ist die letzten Jahre noch keiner gekommen :smiley:


Also ich hoffe ich versteh das jetzt:
Der Shellprozess soll Sigint abfangen, ein fg-Prozess soll den Default-handler haben und ein bg-Prozess soll ihn ignorieren.

Allerdings kapier ich aufgabe e) nicht. Oder sollen auch die fg-Prozessen ein sigint ignorieren und dann von der Shell abgeschossen werden. Oder macht es mehr Sinn, dass man anfängt die jobverwaltung schon mal zu implementieren, damit man alle Kinder abschießen kann oder kann man das mit pid = 0 machen?


Jep das hast du richtig verstanden.

Nein die fg Prozesse sollen das SIGINT nicht ignorieren (ausser das ausgeführte Programm tut es selbst). Es soll aber dennoch an alle Sohnprozesse, also auch den Vordergrundprozess ein SIGQUIT zugestellt werden.
Es würde schon Sinn machen zuerst die Jobverwaltung zu implementieren und dann allen in der Liste das SIGQUIT zu schicken. Alternativ kannst Du das Signal auch an die ganze Prozessgruppe schicken, Du musst dann aber Deine Shell vorher schützen und danach den Schutz wieder aufheben (SIGQUIT ignorieren). Da man das in Teilaufgabe f dann vermutlich eh wieder rückgängig macht ist es also sinnvoll die Jobverwaltung vorzuziehen.

btw ist es nicht so wichtig was in euren einzelnen RCS Versionen drin ist. Der Sinn ist vielmehr euch dazu zu bewegen RCS zu benutzen… (kam übrigens in der letzten Klausur dran…)


:motz: Hättest das nicht früher sagen können… :motz: Naja, dafür kenn ich mich jetzt mit ps aus und weiß was passiert wenn man die pid -1 angibt.
Aber danke für die schnelle Antwort. :slight_smile:


Neulich hab ichs noch in meiner Übung gesagt aber es ist lustig dass das jedes Jahr wieder passiert :smiley: :smiley:

Aber ich nehme an Du hast es nicht als root auf Deinem Rechner ausgeführt g Dann ist es ja noch alles halb so wild…

Wenn Du dem kill -1 mitgibst hilft das schützen der Shell auch nichts mehr :smiley:


Naja ich war schon brav auf nen cip-rechner! :slight_smile: Keine Ahnung was der unter Cyg gemacht hätte…


Ich hab da noch eine Frage zum Teil e)…

Wenn ein Vordergrundprozess läuft und ich ein SIGINT an die shell schicke, dann bekommt der Vordergrundprozess ja das SIGINT “weitergeleitet” und dann noch ein SIGQUIT hinterhergeschickt. Zu dem Zeitpunkt wo ich das SIGQUIT verschicke läuft der Vordergrundprozess doch in der Regel gar nicht mehr (ausser er fängt das SIGINT ab).

Hab ich da was falsch verstanden??


wenn Du der shell ein SIGINT schickst (mit kill), bekommt niemand etwas weitergeleitet. Wenn du dagegen CTRL+C drückst bekommen alle Prozesse auf dem Terminal ein SIGINT. Ansonsten hast Du nichts falsch verstanden.


au ja richtig… Danke!


Weitergelitten wird das sowieso nix. Das Terminal bekommt erstmal alle Tastendruecke mit und leitet die so gut wie immer an den stdin des stdin weiter. Wenn allerdings ein ctrl-c kommt, dann schick es die SIGINTs an alle Prozesse, die in dem Terminal laufen, das ist üblicherweise eine shell und ein paar Prozesse, die diese gestartet hat.