Für Slides und Code Beispiele, siehe Lektion 3
Achtung: Arbeiten Sie nicht direkt auf diesem Repository.
Prüfen Sie die vorhandenen Forks, um das Repository für Ihre Klasse zu finden.
- TLPI Beispielcode Setup auf dem Raspberry Pi:
$ cd ~ $ wget http://man7.org/tlpi/code/download/tlpi-180725-book.tar.gz $ tar xfzmv tlpi-180725-book.tar.gz $ cd tlpi-book $ sudo apt-get install libcap-dev $ sudo apt-get install libacl1-dev $ make
- Schreiben Sie ein Programm my_copy.c, das eine beliebig grosse, existierende Datei source liest und in eine neue Datei dest kopiert, wie das cp Kommando:
$ ./my_copy source dest
- Verwenden Sie System Calls: open(), read(), write().
- Fertig? Bauen Sie Fehlerbehandlung ein.
- Kompilieren Sie das Programm write_bytes zuerst mit und dann ohne die Compiler Option -DUSE_O_SYNC.
- Messen Sie die Laufzeit (real, sys) der Binaries, je mit num-bytes = 100000 und buf-size = 1, 16, 256, 4096:
$ time write_bytes my_file num-bytes buf-size
- Welchen Einfluss hat die Buffergrösse? Und O_SYNC?
- Wann/wozu ist Synchronisieren überhaupt nötig?