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.c
enthä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.c
enthält die Funktions-Signatur:void getAB(int *a, int *b) { }
-
main.c
deklariert zweiint
-Variablen,a
undb
, ruftgetAB(&a, &b)
auf und druckt anschließenda
undb
auf der Kommandozeile. -
fileIO.h
enthält einige#include <…>
-Anweisungen, die Signatur vongetAB
und verlinktfileIO.c
undmain.c
.
Hinweis: Man kann sich darauf verlassen, dassfileIO.conf
genau jeweils einmala
undb
enthält und dass nach dem'='
einint
folgt.
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.c
enthält die Funktions-Signatur:void add_Element(struct node *list, int x)
-
main.c
erstellt 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.h
enthält die Definition des Structs:struct node { int x; struct node *next; };
und verlinkt
sll.c
undmain.c
.
Hinweis: Beim letzten Element mussnext == NULL
sein.
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.c
enthält die leere Signatur einer Funktion:int creat_und_write(FILE *fd, char *string)
-
main.c
erstellt 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.h
verlinktpipe.c
undmain.c
und 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.