Gedächtnisprotokoll, die Reihenfolge der Aufgaben könnte anders gewesen sein. Bin mir auch nicht mehr
ganz sicher, welche der beiden Aufgaben (2,3) jetzt 2 Punkte gegeben hat.
Aufgabe 1, 2 Punkte: Schreibe einen Client (client.c), der Client soll eine Nachricht vom Server erhalten
(Server vorhanden und läuft) und diese Nachricht sofort wieder zurücksenden. Die Nachricht war „Hello
World!\0“. Man kann sich auf \0-Terminierung verlassen.
Tipp: manpage zu getaddrinfo(), enthält ein Beispiel
Aufgabe 2, 1 Punkt: Berechne die N-te Fibonacci Zahl. Alloziere dazu dynamisch ein Array und speichere
darin das Ergebnis. Gebe das Array bzw. das Ergebnis zurück. Die Funktion wurde 10-Mal aufgerufen (10te
Fibonacci Zahl).
Tipp 1: int array = malloc((n+1)*sizeof(int));
Tipp 2: array[0] = 0; array[1] = 1; for(int i = 2 ; i < N ; i++) array[i] = array[i-1] + array[i-2];
Aufgabe 3, 2 Punkte: Öffne eine Pipe und empfange einen String, sende diesen String zurück, jeder
Character soll großgeschrieben sein.
Tipp 1: manpage zu pipe() enthält ein Beispiel
Tipp 2: if (c < ascii_big_character_upper_limit && c > ascii_big_character_lower_limit) c -= 23;
Aufgabe 4, 1 Punkt: Führe die Funktion “abort()“ aus, wenn Signal N empfangen wird.
Tipp: signal(signum,sig_handler); und extra sig_handler() {abort();} schreiben, da MAKE/GCC sonst Fehler
produziert. Funktioniert aber auch ohne, also direkt mit signal(signum,abort);. Somit wäre die Aufgabe in
1 Zeile fertig.
Die Klausur hat insgesamt 6 Punkte, 2 Punkte reichen zum Bestehen. 3 Bonuspunkte möglich
ganz sicher, welche der beiden Aufgaben (2,3) jetzt 2 Punkte gegeben hat.
Aufgabe 1, 2 Punkte: Schreibe einen Client (client.c), der Client soll eine Nachricht vom Server erhalten
(Server vorhanden und läuft) und diese Nachricht sofort wieder zurücksenden. Die Nachricht war „Hello
World!\0“. Man kann sich auf \0-Terminierung verlassen.
Tipp: manpage zu getaddrinfo(), enthält ein Beispiel
Aufgabe 2, 1 Punkt: Berechne die N-te Fibonacci Zahl. Alloziere dazu dynamisch ein Array und speichere
darin das Ergebnis. Gebe das Array bzw. das Ergebnis zurück. Die Funktion wurde 10-Mal aufgerufen (10te
Fibonacci Zahl).
Tipp 1: int array = malloc((n+1)*sizeof(int));
Tipp 2: array[0] = 0; array[1] = 1; for(int i = 2 ; i < N ; i++) array[i] = array[i-1] + array[i-2];
Aufgabe 3, 2 Punkte: Öffne eine Pipe und empfange einen String, sende diesen String zurück, jeder
Character soll großgeschrieben sein.
Tipp 1: manpage zu pipe() enthält ein Beispiel
Tipp 2: if (c < ascii_big_character_upper_limit && c > ascii_big_character_lower_limit) c -= 23;
Aufgabe 4, 1 Punkt: Führe die Funktion “abort()“ aus, wenn Signal N empfangen wird.
Tipp: signal(signum,sig_handler); und extra sig_handler() {abort();} schreiben, da MAKE/GCC sonst Fehler
produziert. Funktioniert aber auch ohne, also direkt mit signal(signum,abort);. Somit wäre die Aufgabe in
1 Zeile fertig.
Die Klausur hat insgesamt 6 Punkte, 2 Punkte reichen zum Bestehen. 3 Bonuspunkte möglich