Aufgabe 1 (10 Punkte) --------------------- Erzeugen Sie ein "mypipe" Quell-RPM fuer die Aufgabe 2. Verpacken Sie folgende Files in dem tar-File mypipe.tar (Endung .tar): 1. Script zum Installieren des Sourcekodepaketes unter einem beliebigen Nutzer: inst-source 2. Script zum erzeugen des Binaerpaketes unter einem beliebigen Nutzer: gen-bin 3. Script zum Installieren des Binaerpaketes unter einem beliebigen Nutzer: bin-install 4. Sourcekodepaket entsprechend der unten genanneten Namenskonvention mypipe-0.1.1-0.src.rpm Die passende Umgebung fuer rpm sind durch die Sripte zu erzeugen. Es sollte also mindestens ein mypipe.c enthalten sein. Vorgehen: * schreiben Sie das benoetigte SPEC-File, * stellen Sie die Quellen zusammen, * erstellen Sie ein Quell-Paket, * testen Sie das Binary-Paket * bei der Installation des Binary-Pakets soll das Program mypipe in das $HOME-Verzeichnis des ausfuehrenden Nutzers kopiert und durch ~/mypipe aufgerufen werden, welches ohne weitere Argumente Usage: mypipe "cmd1 args1" "cmd2 args2" ausgibt. Hinweis: Benutzen Sie %post RPM-Pakete muessen auf SuSE Linux 12.3 (x86_64) z.B. mitte.informatik.hu-berlin.de funktionstuechtig sein und der folgenden Namenskonvention folgen: mypipe_0.1.1-0.src.rpm (Quell -Paket) Aufgabe 2: (8 Punkte) --------------------- Fuktionalitaet von des C-Programs mypipe: Aufruf mit keinem Argument Ausgabe von: Usage: mypipe "cmd1 args1" "cmd2 args2" Aufruf mit 2 Argumenten in Quotas z.B. mypipe "ps aux" "wc -l" liefert das Ergebnis, welches in der Shell dem Aufruf von "ps aux | wc -l" entspricht. mypipe soll natürlich mit verschiedenen Kommandos funktionieren, die über STDIN und STDOUT kommunizieren koennen. Fehlerbehandlung fuer folgende Faelle: * Unzulaessige Zahl von Argumenten (verschieden von 0, 2) * cmd1 oder cmd2 nicht ausführbar (exec schlägt fehl) (Anregeung fuer Startpunkt: https://www2.informatik.hu-berlin.de/~bell/Systemcalls_SSL/Beispiele/Prozesse/pwd-test.c) Aufgabe 3: (10+5 Punkte) ------------------------ Schreiben Sie ein C-Programm, das auswertet, wie das Betriebsystem auf die Signale 1, ..., 32 reagiert. Untersuchen Sie insbesondere, welche Signale durch einen Handler gefangen werden koennen, welche Defaultbehandlung durch den Kernel des drunterliegenden OS erfolgt. Das Programm sollte für die Signale i= 1..32 die folgende Tabelle ausgeben: normal: SIGNAL| g | t | s | =================== ... i | X | | | Zusatzaufgabe: SIGNAL| g | t | s | c | ======================= ... i | X | | | | Im Tabellenkopf stehen; SIGNAL -> Nummer des Signals, g -> Kann das Signal gefangen werden? t -> terminate s -> stop c -> continue In dem Eintrag pro Signal i werden die gueltigen Felder g, t, s, c angekreuzt. Die Spalte c ist eine Zusatzaufgabe und ist etwas knifflig, da zuerst das Signal für stop ermittelt werden muss, der entsprechende Prozess angehalten wird und dann erst ausprobiert werden kann, ob das entsprechende Signal fuer ihn ein "continue" bewirkt. Abgabeformat: ------------- Tar-File: signal.tar enthaelt: signal/Makefile signal/check_signals.c signal/* Das Makefile erstellt beim Aufruf von make das Exicutable signal/check_signals und startet es auch gleich! Anregung: --------- Diese Funktionen koennten nuetzlich sein: kill, waitpid, fork Bemerkung: ---------- Da nicht bekannt ist ob GOYA Zustzpunkte unterstuetzt, wird die Aufgabe mit 15 Punkten angegeben. Sollten Sie 10 davon erreichen haben Sie somit die volle Punktzahl. Die 5 Punkte werden bei der Scheinvergabe dann von der Mindestpunktzahl wwwieder abgezogeen. ----------------------------------------------------------------------------------- Abgabeformat aller Aufgaben Abgabe aller Aufgaben als ein GOYA-File im TAR-Format tgz/mypipe.tar (tar-File mit Files fuer RPM-Quell-Paket 1. und 2.Aufgabe) /signal.tar (tar-File 3.Aufgabe) Abgabetermin: 10.06.2014 24:00 Uhr Zurück zur Gliederung
Mo 26. Mai 12:12:58 CEST 2014 J-P Bell