Systempraktikum – Eignungsfeststellung
Makefile ist immer gegeben. Die Funktionsnamen und auch die Beispielwerte in fileIO.conf oder in den Linked-List-Elementen können variieren.
Aufgabe 1 (1 Punkt)
Gegeben:
main.centhält eine leeremain()-Funktion.<math.h>ist inkludiert.
Aufgabe:
Vervollständige die Funktion main():
- Lies den ersten Kommandozeilenparameter ein.
- Prüfe, ob dieser Parameter eine Zahl zwischen 2 und 10000 darstellt.
- Falls nicht: darf
main()undefiniert beendet werden. - Falls ja: Gib
"1\n"auf der Kommandozeile aus, wenn die Zahl eine Primzahl ist, und"0\n"falls nicht.
- Falls nicht: darf
Aufgabe 2 (2 Punkte)
Gegeben:
-
Eine Datei
fileIO.conf, die ungefähr folgenden Inhalt hat:a = 15 b = 13 -
fileIO.centhält die Funktions-Signatur:void getAB(int *a, int *b) { } -
main.cdeklariert zweiint-Variablen,aundb, ruftgetAB(&a, &b)auf und druckt anschließendaundbauf der Kommandozeile. -
fileIO.henthält einige#include <…>-Anweisungen, die Signatur vongetABund verlinktfileIO.cundmain.c.
Hinweis: Man kann sich darauf verlassen, dassfileIO.confgenau jeweils einmalaundbenthält und dass nach dem'='einintfolgt.
Aufgabe:
Vervollständige die Funktion getAB(), indem du die Datei fileIO.conf einliest und die Werte für a und b gemäß der Datei setzt.
Aufgabe 3 (2 Punkte)
Gegeben:
-
sll.centhält die Funktions-Signatur:void add_Element(struct node *list, int x) -
main.cerstellt eine verkettete Liste (Linked List) mit einigen Elementen, führt dannadd_Element(&first_node, 7)aus und druckt die Werte desx-Feldes der einzelnen Listenelemente auf der Kommandozeile aus (z. B."4->3->48->7"für eine Liste mit ursprünglich drei Nodes und den entsprechenden Werten: 4, 3, 48). -
sll.henthält die Definition des Structs:struct node { int x; struct node *next; };und verlinkt
sll.cundmain.c.
Hinweis: Beim letzten Element mussnext == NULLsein.
Aufgabe:
Vervollständige die Funktion add_Element(struct node *list, int x), sodass ein neues Node am Ende der Liste angehängt wird, das den Wert x enthält.
Aufgabe 4 (1 Punkt)
Gegeben:
-
pipe.centhält die leere Signatur einer Funktion:int creat_und_write(FILE *fd, char *string) -
main.cerstellt einen Arrayint fd[2], der die Deskriptoren der Pipe enthalten soll. Anschließend wirdcreat_und_write(fd, "Hallo Welt\0")aufgerufen und danach einfork()durchgeführt.
Im Kindprozess wird dann aus der Pipe gelesen und das Gelesene auf der Kommandozeile ausgegeben. -
pipe.hverlinktpipe.cundmain.cund enthält den Hinweis, dass man sich darauf verlassen kann, dass der gegebene String\0-terminiert ist.
Aufgabe:
Vervollständige die Funktion creat_und_write(FILE *fd, char *string) so, dass:
- Eine Pipe angelegt wird.
- Der String in die Pipe geschrieben wird.
- Die Anzahl der geschriebenen Zeichen zurückgegeben wird.