Gedächtnisprotokoll

Hinweis: Die Reihenfolge der Aufgaben könnte anders gewesen sein. Es ist nicht mehr ganz klar, welche der beiden Aufgaben (2,3) jeweils 2 Punkte erhalten haben.


Aufgabe 1 (2 Punkte)

Aufgabenstellung:
Schreibe einen Client (client.c), der eine Nachricht vom Server empfängt (der Server ist vorhanden und läuft) und diese Nachricht sofort wieder zurücksendet.
Die empfangene Nachricht ist:

Hello World!\0

Es kann sich auf die \0-Terminierung verlassen werden.

Tipp:
Siehe die manpage zu getaddrinfo(), welche ein entsprechendes Beispiel enthält.


Aufgabe 2 (1 Punkt)

Aufgabenstellung:
Berechne die N-te Fibonacci-Zahl.

  • Alloziere dazu dynamisch ein Array und speichere darin das Ergebnis.
  • Gib das Array bzw. das Ergebnis zurück.
  • Die Funktion wird 10-mal aufgerufen (d.h. es soll die 10. Fibonacci-Zahl berechnet werden).

Tipps:

  1. Alloziere das Array:

    int* array = malloc((n+1) * sizeof(int));
  2. Initialisiere und berechne:

    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)

Aufgabenstellung:
Öffne eine Pipe und empfange einen String. Sende diesen String zurück, wobei jeder Character in Großbuchstaben umgewandelt wird.

Tipps:
3. Siehe die manpage zu pipe(), welche ein Beispiel enthält.
4. Beispielhafter Codeausschnitt zur Umwandlung in Großbuchstaben:

if (c < ascii_big_character_upper_limit && c > ascii_big_character_lower_limit) {
    c -= 23;
}

(Anmerkung: Die genauen ASCII-Grenzen müssen entsprechend definiert werden.)


Aufgabe 4 (1 Punkt)

Aufgabenstellung:
Führe die Funktion abort() aus, wenn ein bestimmtes Signal N empfangen wird.

Tipp:
Verwende signal() und implementiere gegebenenfalls einen eigenen Signal-Handler:

signal(signum, sig_handler);  // Definiere sig_handler(), der abort() aufruft:
// Beispiel:
void sig_handler(int signum) {
    abort();
}

Alternativ funktioniert es auch direkt so:

signal(signum, abort);

Somit könnte die Aufgabe in einer Zeile gelöst werden.


Gesamtbewertung

  • Gesamtpunkte: 6 Punkte
  • Bestanden: 2 Punkte reichen zum Bestehen
  • Bonus: Es sind 3 Bonuspunkte möglich
×

MyUniNotes is a free, non-profit project to make education accessible for everyone. If it has helped you, consider giving back! Even a small donation makes a difference.

These are my personal notes. While I strive for accuracy, I’m still a student myself. Thanks for being part of this journey!