Skip to content

FHNW Modul System-Programmierung (syspr) Hands-on Lektion 13

Notifications You must be signed in to change notification settings

fhnw-syspr-3ia/fhnw-syspr-work-13

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 

Repository files navigation

System-Programmierung

Hands-on zu Lektion 13

Für Slides und Code Beispiele, siehe Lektion 13

Achtung: Arbeiten Sie nicht direkt auf diesem Repository.
Erstellen Sie eine persönliche Kopie, mit diesem GitHub Classroom Link.

a) Kalender-Zeit, 15'

  • Lesen Sie das folgenden TLPI Beispiel Programm:
    calendar_time.c
  • Vergleichen Sie den Output der Kommandos:
    $ ./date
    $ ./calendar_time
  • Schreiben Sie ein eigenes Programm, welches den Überlauf von Sekunden bei mktime() zeigt.

b) Zeit parsen / formatieren, 15'

  • Lesen Sie das folgenden TLPI Beispiel Programm:
    strtime.c
  • Vergleichen Sie den Output der Kommandos:
    $ ./strtime "9:39:46pm 1 Feb 2011" "%I:%M:%S%p %d %b %Y"
    $ ./strtime "9:39:46pm 1 Feb 2011" "%I:%M:%S%p %d %b %Y" "%F %T"
  • Geben Sie das Datum im ISO 8601 Format aus.

c) Locale, 15'

  • Schreiben Sie ein Programm my_locale.c, welches die Zahl 10'000.5 in zwei verschiedenen Locales ausgibt.
  • Prüfen Sie, ob die Locale nach Programmende bleibt.
  • Falls ja, erweitern Sie ihr Programm, um am Ende die vor dem Aufruf gesetzte Locale wieder herzustellen.

d) Zeitmessung, 30'

  • Schreiben Sie ein eigenes time Programm, my_time.c
  • Das zu messende Programm soll aus argv gelesen und mit fork() und execve() gestartet werden.
  • Der Parent Prozess wartet mit wait(), und bestimmt die Laufzeit, real und CPU Zeit, des Child Prozesses.
  • Die Ausgabe soll derjenigen von time entsprechen.

e) Timer, 15'

  • Lesen Sie das folgenden TLPI Beispiel Programm:
    real_timer.c
  • Testen Sie den Timer, z.B. mit den Kommandos:
    $ ./real_timer 1 800000 1 0 # 1.8s, 1s Periode
    $ ./real_timer 3 0 # einmaliger Timer, nach 3s
  • Ändern Sie das Programm, dass der Timer CPU Zeit statt reale Zeit verwendet, und testen Sie den Code.

Abgabe (optional)

  • Lokale Änderungen committen und pushen.
  • GitHub Issue erstellen mit "Bitte um Review, @tamberg".
  • Offene Fragen ausformulieren, was geht nicht, was haben Sie versucht.
  • GitHub mailt mir (@tamberg) automatisch, ich versuche in weniger als 24h zu antworten :)

Tools

Git

Auf Ihrem Computer

  • Zu Beginn jeder Lektion wird ein Hands-on Repository Link freigeschaltet
  • Nachdem Sie das "Assessment" annehmen, bekommen Sie per Email ein Repository
  • Die REPO_URL enthält Ihren GitHub Account USER_NAME und Ihre Klasse 3ia oder 3ib, z.B.
    https://github.com/fhnw-syspr-3ia/fhnw-syspr-work-13-tamberg

Auf dem Raspberry Pi

  • Repository klonen
    $ cd ~
    $ git clone REPO_URL
  • Neue Datei kreieren
    $ git add FILE
  • Änderungen committen
    $ git commit FILE -m "Fixed all bugs"
  • Änderungen hochladen
    $ git push

Nano

Auf dem Raspberry Pi

  • Neue oder bestehende Datei öffnen mit $ nano FILE
  • Editieren (Achtung, nano hat kein Undo)
  • Speichern mit CRTL-X Y RETURN

SSH

Auf Ihrem Computer

  • Terminal öffnen (Mac) oder WINDOWS R cmd RETURN (Windows)
  • SSH Session starten mit
    $ ssh [email protected]

Support

About

FHNW Modul System-Programmierung (syspr) Hands-on Lektion 13

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published