Tafelübung zu BS 5. Dateioperationen

Größe: px
Ab Seite anzeigen:

Download "Tafelübung zu BS 5. Dateioperationen"

Transkript

1 Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund Agenda Besprechung Aufgabe 4: Speicherverwaltung Aufgabe 5: Dateioperationen Öffnen/Lesen/Schreiben von Dateien/Verzeichnissen - Syscall-Wrapper (open/close/write/read) - libc-abstraktion - Dateien (fopen/fclose/fwrite/fread) - Verzeichnisse (opendir/readdir/closedir) Aufbau des Rohdateiformats Big- und Little-Endian PGM-Bildformat (ASCII-Variante) BS: U5 Dateioperationen 2

2 Besprechung Aufgabe 4 Foliensatz Besprechung BS: U5 Dateioperationen 3 Arbeiten mit Dateien Alles unter Linux/Unix wird auf Dateien abgebildet viele verschiedene Dateitypen (Geräte, Sockets, ) Typische Dateioperationen sind Öffnen/Lesen/Schreiben/Schließen Unter Linux mehrere Möglichkeiten Syscall-Wrapper der C-Bibliothek ( low-level ), z.b. open(2) int open(const char *path, int flags) syscall( NR_open, path, flags) - keine Abstraktion, sondern direkte Umsetzung in Systemcall Abstrakte Stream Schnittstelle der C-Bibliothek ( high-level ), z.b. fopen(3) FILE* fopen(const char *path, const char *mode) Abstraktion von Filedeskriptor Stream (FILE*) open(path, flags) BS: U5 Dateioperationen 4

3 Low-Level Dateioperationen Öffnen von Dateien mit open(2) int open(const char *path, int flags) gibt einen Dateideskriptor zurück, der für die anderen Funktionen verwendet wird Lesen aus Dateien mit read(2) ssize_t read(int fd, void *buf, size_t count) Schreiben in Dateien mit write(2) ssize_t write(int fd, void *buf, size_t count) Schließen von offenen Dateien mit close(2) int close(int fd) Standardisiert u.a. in POSIX BS: U5 Dateioperationen 5 Beispiel low-level #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define SIZE 64 int main(void) { int r_fd = 0, w_fd = 0; ssize_t r_bytes = 0, w_bytes = 0; char buf[size] = {0; /* Datei zum Lesen öffnen */ r_fd = open( /tmp/inputfile, O_RDONLY); if (r_fd == -1) { /* Fehler */ ; r_bytes = read(r_fd, buf, SIZE); /* SIZE Bytes aus der Datei lesen */ /* Ausgabedatei öffnen und leeren; nicht vorhanden? -> erzeugen! */ w_fd = open( /tmp/outputfile, O_CREAT O_WRONLY O_TRUNC); if (w_fd == -1) { /* Fehler */ ; w_bytes = write(w_fd, buf, r_bytes); /* gelesene Bytes schreiben */ close(r_fd); close(w_fd); return 0; BS: U5 Dateioperationen 6

4 C-Streams Abstrakter, plattformunabhängiger Kommunikationskanal zu einem Gerät einer einfachen Datei einem Prozess, Interne Pufferung Blockweises Lesen höhere Verarbeitungsgeschwindigkeit Abstraktion vom eigentlichen Datenstrom Lesen und Zurückschreiben von Daten (fgetc(3), ungetc(3)) Unabhängiges Lesen und Schreiben im Datenstrom (an verschiedenen Positionen) Stream-Repräsentation durch struct FILE enthält Zeiger auf Lese-/Schreibpuffer, aktuelle Positionen, Undo- Informationen (in stdio.h definiert) definierte Standardstreams: stdin, stdout & stderr BS: U5 Dateioperationen 7 High-Level Dateioperationen Öffnen von Dateien mit fopen(3) FILE *fopen(const char *path, const char *mode) Modi: r/r+ (lesen/+schreiben), w/w+ (schreiben/+lesen), a/a+ (anhängen/+lesen) (siehe Manpage) Lesen aus Dateien mit fread(3) size_t fread(void *buf, size_t size, size_t count, FILE *stream) Schreiben in Dateien mit fwrite(3) size_t fwrite(void *buf, size_t size, size_t count, FILE *stream) Schließen von offenen Dateien mit fclose(3) int fclose(file *stream) Im C-Standard enthalten, plattformunabhängig! BS: U5 Dateioperationen 8

5 Beispiel High-Level #include <stdio.h> #define SIZE 64 int main(void) { FILE *r_file = NULL, *w_file = NULL; size_t r_bytes = 0, w_bytes = 0; char buf[size] = {0; /* Datei zum Lesen öffnen */ r_file = fopen("/tmp/inputfilef", "r"); if (r_file == NULL) { /* Fehler */ r_bytes = fread(buf, sizeof(char), SIZE, r_file); /* Ausgabedatei öffnen und leeren; nicht vorhanden? -> erzeugen! */ w_file = fopen("/tmp/outputfilef", "w"); if (w_file == NULL) { /* Fehler */ /* gelesene Bytes schreiben */ w_bytes = fwrite(buf, sizeof(char), r_bytes, w_file); fclose(r_file); fclose(w_file); return 0; BS: U5 Dateioperationen 9 Dateieigenschaften und stat(2) Dateien unter Linux haben verschiedenste Eigenschaften Besitzer/Gruppe Größe Anzahl der belegten Blöcke Anlegezeitpunkt, letzter Zugriffs- und Änderungszeitpunkt Typ: Verzeichnis, Gerätedatei, (Symbolischer) Link, Named Pipe, Abfrage dieser Eigenschaften mit stat(2) int stat(const char *path, struct stat *buf) Rückgabe der Werte in eine Struktur, Typ struct stat Dateityp kann über Makros abgefragt werden, z.b. S_ISREG(st_mode) = reguläre Datei S_ISDIR(st_mode) = Verzeichnis Benötigte Header: <sys/types.h>, <sys/stat.h>, <unistd.h> BS: U5 Dateioperationen 10

6 Beispiel stat(2) #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> int main(void) { struct stat fileinfo = {0; int retval = 0; retval = stat("/etc/passwd", &fileinfo); if (retval == -1) { /* Fehler */ ; printf("normale Datei: %d\n", S_ISREG(fileinfo.st_mode)); printf("verzeichnis : %d\n", S_ISDIR(fileinfo.st_mode)); printf("größe : %d\n", (int) fileinfo.st_size); /* Extraktion der Rechteinformationen aus st_mode (siehe manpage) */ printf("rechte : %o\n", fileinfo.st_mode & 0777); return 0; BS: U5 Dateioperationen 11 High-Level Verzeichnisoperationen Öffnen von Verzeichnissen mit opendir(3) DIR *opendir(const char *path) Auslesen der Verzeichnisinhalte mit readdir(3) struct dirent *readdir(dir *dir) Rückgabe = NULL alle Verzeichniseinträge gelesen, keine weiteren vorhanden oder Fehler sonst: in dirent.d_name steht der Name des Verzeichniseintrages Schließen von geöffneten Verzeichnissen mit closedir(3) int closedir(dir *dir) Benötigte Header: <sys/types.h>, <dirent.h> BS: U5 Dateioperationen 12

7 Beispiel: Verzeichnis Auslesen #include <sys/types.h> #include <dirent.h> #include <stdio.h> int main(void) { int retval = 0, count = 0; DIR *dir = NULL; struct dirent *entry = NULL; dir = opendir("/tmp"); /* Verzeichnis öffnen, DIR-Zeiger erstellen */ if (!dir) { /* Fehler */ /* jeder Aufruf liefert einen Eintrag, NULL -> Listenende */ while ((entry = readdir(dir))) { printf("eintrag %d: %s\n", ++count, entry->d_name); printf("anzahl: %d\n", count); retval = closedir(dir); /* Verzeichnis wieder schließen */ if (retval == -1) { /* Fehler */ ; return 0; BS: U5 Dateioperationen 13 Hilfreiche Stringfunktionen Notwendiger Header #include <string.h> Kopieren eines Strings char *strncpy( char *to, const char *from, size_t count ); Konkatenieren zweier Strings char *strncat( char *str1, const char *str2, size_t count ); Länge eines Strings (ohne terminierende Null) size_t strlen( char *str ); BS: U5 Dateioperationen 14

8 Bin2PGM Aufgabe: Umwandlung eines Spezialkamera-Bildformats Datenquelle: TOF-Kamera (Tiefenbild) Umgang mit Dateioperationen soll geübt werden a) Verarbeitung von Kommandozeilenparametern datei_01 datei_02 b) Einlesen aller Dateien, Prüfen auf Validität - Überprüfen der Dateigröße - Auswerten des Headers c) Konvertierung in ein Standardformat, das mit einem normalen Bildbetrachtungsprogramm angezeigt werden kann BS: U5 Dateioperationen 15 Rohdateiformat im Hex-Editor studi@bs:~$ od -f 000 head ,280000e+04 4,120000e+02 1,000000e+01 1,000000e ,000000e+00 5,000000e+03 2,250000e+02 1,603000e ,052600e+05 0,000000e+00 0,000000e+00 0,000000e ,000000e+00 1,000000e+00 2,500000e+01-1,000000e ,000000e+00 3,840000e+02 3,000000e+00 7,006703e ,000000e+00 0,000000e+00 0,000000e+00 0,000000e ,300000e+01 1,000000e+00 4,800000e+01 8,100000e ,000000e-04 0,000000e+00 0,000000e+00 1,000000e ,000000e+00 5,000000e+00 5,000000e+02 1,000000e ,000000e+00 0,000000e+00 0,000000e+00 0,000000e+00 an dieser Stelle steht die Größe des Datenbereichs in Byte: an dieser Stelle steht die Größe des Headers in Byte: 412 DATA_SIZE + HEADER_SIZE = FILE_SIZE = Die restlichen Einträge des Headers sind für unseren Zweck nicht weiter interessant. Aus wie vielen Bytes besteht ein float normalerweise? BS: U5 Dateioperationen 16

9 Rohdateiformat im Hex-Editor Ansehen des Datenbereichs ( -j 412 überspringt die ersten 412 Bytes): studi@bs:~$ od -j 412 -f 000 head ,638455e-01 4,692418e-01 4,585017e-01 4,670429e ,682699e-01 4,758938e-01 4,944439e-01 4,922463e ,900948e-01 5,011191e-01 5,014700e-01 5,097792e ,150690e-01 5,320356e-01 5,312724e-01 5,482447e ,531824e-01 5,635117e-01 5,674478e-01 6,804598e ,835271e-01 5,883580e-01 5,979524e-01 6,003090e ,514618e-01 6,582504e-01 6,266403e-01 7,016214e ,458892e-01 6,376296e-01 6,567788e-01 6,596068e ,724393e-01 6,784100e-01 6,763144e-01 6,971168e ,971825e-01 6,857606e-01 6,735934e-01 6,766129e-01 zur Erinnerung: Größe des Datenbereichs ist Bytes, jeder float (jeweils 4 Bytes) steht für einen Bildpunkt Die Werte sind bereits normalisiert, d.h. es kommen nur Fließkommazahlen zwischen 0.0 und 1.0 vor. BS: U5 Dateioperationen 17 Rohdateiformat im Hex-Editor studi@bs:~$ od -j 412 -f 000 head ,638455e-01 4,692418e-01 4,585017e-01 4,670429e ,682699e-01 4,758938e-01 4,944439e-01 4,922463e-01 [ ] (i = Zeile, j = Spalte) studi@bs:~$ od -j 412 -f 000 head (0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) [ ] Wichtig: Das Rohdateiformat ist spaltenweise aufgebaut. int start_img = (int)get_float(bin[1])/4; for (i = 0; i < 64; i++) /* iteriere durch alle Bildzeilen */ { for (j = 0; j < 50; j++) /* und alle Bildspalten */ { /* Gebe die Werte zeilenweise aus */ (0,64) (1,64) (2,64) fprintf(output_file, "%03d ", (int)(get_float(bin[start_img+j*64+i])* 255)); fprintf(output_file, "\n"); (0,0) (1,0) (0,1) (1,1) get_float wichtig für alle Zugriffe auf das Rohdateiformat (Big- und Little-Endian-Problematik) BS: U5 Dateioperationen 18 (0,2) (1,2) 64x50 (2,0) (2,1) (2,2) (50,0) (50,1) (50,2) (50,64)

10 Big- und Little-Endian Gullivers Reisen (Jonathan Swift) Bewohner des Landes Lilliput teilen sich auf zwei verfeindete Gruppen auf - die einen schlagen ihre Eier am großen Ende auf (Big Ender) - die anderen schlagen ihre Eier am kleinen Ende auf (Little Ender) Big- und Little-Endian im Kontext der Informatik studi@bs:~$ od -x -N studi@bs:~$ od -x -N So würde ein float als Little-Endian aussehen und so als Big-Endian. Ein Dateiformat jedoch möglicherweise verschiedene Architekturen. Was tun? Klar: Architektur feststellen und übersetzen, falls notwendig. (Keine Sorge, das ist in der Vorgabe bereits erledigt!) BS: U5 Dateioperationen 19 PGM-Bilddateiformat studi@bs:~$ cat 000.pgm P Salvador Dalí P2: ASCII-basierte Variante des PGM-Formates P5 wäre die binäre darauf folgt die Bildbreite (50) und Höhe (64) 255 bezeichnet den maximalen Grauwert Grauwerte von erlaubt Danach folgen Bildpunkt für Bildpunkt die jeweiligen Farbwerte (getrennt durch Whitespace, also: Leerzeichen, Newlines oder Tabulatoren) BS: U5 Dateioperationen 20

11 Falls noch Zeit ist. eine kleine Vorstellung von GDB. BS: U5 Dateioperationen 21 Optional: GDB GDB GNU Debugger kommandozeilenbasiert grafische Front-ends verfügbar (z.b. DDD, Insight) oder integriert (z.b. Eclipse, NetBeans) Starten mit: home:~> gdb malloctest Programm normal ausführen: (gdb) run GDB fängt Signale an das gestartete Programm ab (z.b. ungültige Speicherzugriffe) und erlaubt Einsicht und Manipulation von Variablenwerten und Kontrollfluss. BS: U5 Dateioperationen 22

12 Optional: GDB Segfault Beispiel: int main(){ int i = 43; int *p = (int*)0; *p = ++i; // Versucht Wert an Adresse 0 zu schreiben. return 0; # Verwende u.a. keine Register als Zwischenspeicher, + Metainfo Home> gcc -O0 -g -Wall -o main main.c Home> gdb main (gdb) run Starting program: /home/kleinsor/temp/main Program received signal SIGSEGV, Segmentation fault. 0x in main () at main.c:4 5 *p = ++i; // Versucht Wert an Adresse 0 zu schreiben. (gdb) BS: U5 Dateioperationen 23 Optional: GDB Segfault entdecken Beispiel: int main(){ int i = 43; int *p = (int*)0; *p = ++i; // Versucht Wert an Adresse 0 zu schreiben. return 0; Starting program: /home/kleinsor/temp/main Program received signal SIGSEGV, Segmentation fault. 0x in main () at main.c:4 4 *((int*)0) = ++i; // Versucht Wert an Adresse 0 zu schreiben. (gdb)print i $1 = 44 (gdb)info locals i = 44 p = (int *) 0x0 (gdb)info variables [Symboltabelle!] BS: U5 Dateioperationen 24

13 Optional: GDB Breakpoints Halten Ausführung an vordefinieren Punkten an. Erlaubt also auch das punktuelle Auswerten von Variablen. #include <stdio.h> int segfault() { int i = 43; int *p = (int*)0; *p = ++i; return *p; int main() { printf("%d\n", segfault()); return 0; Home> gdb main (gdb) break main Breakpoint 1 at 0x80483bc: file main.c, line 9. (gdb) run Starting program: /home/kleinsor/temp/a.out Breakpoint 1, main () at main.c:9 9 printf("%d\n", segfault()); (gdb) BS: U5 Dateioperationen 25 Optional: GDB Breakpoints #include <stdio.h> int segfault() { int i = 43; int *p = (int*)0; *p = ++i; // Der Segfault-Kandidat return *p; int main() { printf("%d\n", segfault()); return 0; (gdb) list segfault [] 5 *p = ++i; // Der Segfault-Kandidat [] (gdb) break 4 Breakpoint 1 at 0x : file main.c, line 4. (gdb) cont Breakpoint 1, segfault () at main.c:4 4 int *p = (int*)0; (gdb) backtrace #0 0x080483a2 in segfault () at main.c:4 #1 0x080483c1 in main () at main.c:9 (gdb) set variable p = &i (gdb) cont Continuing. 44 BS: U5 Dateioperationen 26

14 Optional: GDB Even more Kann sowohl auf Sourcecodeebene (-00 -g) als auch auf Instruktionsebene arbeiten. Also auch direkt mit Adressen im Speicher des überwachten Prozesses. Kann noch erheblich mehr: Ausdrücke überwachen Umgebung manipulieren (freier Zugriff!) Kontrollfluss manipulieren: z.b. Funktionen 'interaktiv' aufrufen und sehr viel mehr! Hilfe: Allgemein: z. B. Spezifisch: z. B. (gdb) help (gdb) help break BS: U5 Dateioperationen 27

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2010/bs/

Mehr

5. Dateioperationen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

5. Dateioperationen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund Tafelübung zu BSRvS1 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/

Mehr

Tafelübung zu BS 4. Dateioperationen

Tafelübung zu BS 4. Dateioperationen Tafelübung zu BS 4. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2013/bs/

Mehr

Tafelübung zu BSRvS 1 5. Dateioperationen

Tafelübung zu BSRvS 1 5. Dateioperationen Tafelübung zu BSRvS 1 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2014/bs/

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2011/bs/

Mehr

Betriebssysteme. Tafelübung 5. Dateioperationen. Daniel Friesel.

Betriebssysteme. Tafelübung 5. Dateioperationen. Daniel Friesel. Betriebssysteme Tafelübung 5. Dateioperationen https://ess.cs.tu-dortmund.de/de/teaching/ss2018/bs/ Daniel Friesel daniel.friesel@tu-dortmund.de https://ess.cs.tu-dortmund.de/~df AG Eingebettete Systemsoftware

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2012/bs/

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2012/bs/

Mehr

U5 Verzeichnisse und Sortieren

U5 Verzeichnisse und Sortieren U5 Verzeichnisse und Sortieren U5 Verzeichnisse und Sortieren Linux-Benutzerumgebung Fehlerbehandlung POSIX-Verzeichnis-Systemschnittstelle Datei-Attribute in Inodes U5.1 Verzeichnisse öffnen: opendir(3)

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC) Übungen zu Systemnahe Programmierung in C (SPiC) Peter Wägemann, Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 8 Sommersemester 2015 Inhalt POSIX Verzeichnisschnittstelle opendir, closedir,

Mehr

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C für Elektrotechniker Kapitel 9: Dateisystem, Dateisystem E/A-Konzept in UNIX und C UNIX (und damit auch C) verwendet Datenströme (streams) als Konzept zur Verbindung von Programmen mit E/A-Geräten und

Mehr

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Dateikanäle. Inhalt. Dateien & Dateikanäle Dateikanäle Ein-/Ausgaben

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Dateikanäle. Inhalt. Dateien & Dateikanäle Dateikanäle Ein-/Ausgaben Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier (Lehrstuhl Informatik 4) Übung 8 Verwendung von stat Sommersemester 2016 Lehrstuhl Informatik 4 Übungen zu SPiC (SS 2016) 2 15 Ein- und

Mehr

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk. Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware

Mehr

Betriebssysteme. Agenda. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Betriebssysteme. Agenda. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk. Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC) Sommersemester 2018

Übungen zu Systemnahe Programmierung in C (SPiC) Sommersemester 2018 Übungen zu Systemnahe Programmierung in C (SPiC) Sommersemester 2018 Übung 8 Benedict Herzog Sebastian Maier Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte

Mehr

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk. Betriebssysteme Tafelübung 4. Speicherverwaltung https://ess.cs.tu-dortmund.de/de/teaching/ss2018/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de https://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware

Mehr

Teil I Debuggen mit gdb

Teil I Debuggen mit gdb Teil I Debuggen mit gdb Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden Wer kennt das nicht? $./a.out

Mehr

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2017/18

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2017/18 Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2017/18 Übung 7 Benedict Herzog Sebastian Maier Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für

Mehr

Beispiel / Übung: Prof. Dr. A. Christidis WS 2012/13

Beispiel / Übung: Prof. Dr. A. Christidis WS 2012/13 Beispiel / Übung: Erstellen Sie ein kurzes, plattform-unabhängiges C-Programm ( Konsolenanwendung ), das sich in die Reihe bereits gestarteter Kopien einordnet, sich nach 20 sec (Rechenzeit) abmeldet und

Mehr

Tafelübung zu BS 1. Prozesse, Shell

Tafelübung zu BS 1. Prozesse, Shell Tafelübung zu BS 1. Prozesse, Shell Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2012/bs/

Mehr

Tafelübung zu BSRvS 1 1. Prozesse, at

Tafelübung zu BSRvS 1 1. Prozesse, at Tafelübung zu BSRvS 1 1. Prozesse, at Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os http://ess.cs.tu-dortmund.de/de/teaching/ss2009/bsrvs1/

Mehr

high level I/O/ low level I/O

high level I/O/ low level I/O Dateiarbeit in C Datei(engl. File) ist ein Menge von Daten (Bytes) auf einem geeigneten Datenträger. Festplatte USB-Stick Früher: Magnetband, Lochband, Lochkartenstapel, Diskette Eine Datei enthält Daten

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 10: Arbeiten mit Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen in C 4. Bildschirm

Mehr

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1 Programmiertechnik 1 Unit 12: Programmiersprache C - Betriebssystemschnittstellen Andreas Polze 1 Ablauf Zugriff auf Betriebssystemdienste Dateideskriptoren low-level I/O read and write open, creat, close,

Mehr

Tafelübung zu BS 1. Prozesse, Shell

Tafelübung zu BS 1. Prozesse, Shell Tafelübung zu BS 1. Prozesse, Shell Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2012/bs/

Mehr

Dateizugriff unter C

Dateizugriff unter C Begriffe Dateizugriff unter C Datei = sequentielle Ansammlung von Datenbytes, z.b. auf einer Festplatte Auch Bildschirm und Tastatur werden wie Dateien behandelt: Bildschirm ist die Datei stdout Tastatur

Mehr

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt (bei) informatik.fh-wiesbaden.de Seite 1 File I/O Persistieren von Daten Gastvorlesung - 18.01.10 Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt

Mehr

I Dateisysteme. I.1 Allgemeine Konzepte. Einordnung. Prozessor (CPU, Central processing unit) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices)

I Dateisysteme. I.1 Allgemeine Konzepte. Einordnung. Prozessor (CPU, Central processing unit) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices) I Dateisysteme I Dateisysteme I.1 Allgemeine Konzepte Einordnung Prozessor (CPU, Central processing unit) Hauptspeicher (Memory) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices) externe Schnittstellen

Mehr

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. FB Automatisierung und Informatik.

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. FB Automatisierung und Informatik. Linux Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung und Informatik:

Mehr

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. Hochschule Harz. FB Automatisierung und Informatik.

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. Hochschule Harz. FB Automatisierung und Informatik. Linux Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung und Informatik:

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 9 I/O (2) Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät UNIX I/O UNIX I/O: ähnlich wie Standard-I/O, jedoch File-Deskriptoren

Mehr

Tafelübung zu BS 4. Speicherverwaltung

Tafelübung zu BS 4. Speicherverwaltung Tafelübung zu BS 4. Speicherverwaltung Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2014/bs/

Mehr

C-Kurs 2010 Pointer. 16. September v2.7.3

C-Kurs 2010 Pointer. 16. September v2.7.3 C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next

Mehr

Tafelübung zu BS 4. Speicherverwaltung

Tafelübung zu BS 4. Speicherverwaltung Tafelübung zu BS 4. Speicherverwaltung Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2014/bs/

Mehr

Strings (Zeichenketten)

Strings (Zeichenketten) Strings (Zeichenketten) INE1, Montag M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Interaktion mit Computer oft textbasiert Fragen wie wird Text dargestellt? wie wird

Mehr

Tafelübung zu BS 1. Prozesse, ToothBrush

Tafelübung zu BS 1. Prozesse, ToothBrush Tafelübung zu BS 1. Prozesse, ToothBrush Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

Einführung in die Programmierung für Physiker. Die Programmiersprache C Ein- und Ausgabe

Einführung in die Programmierung für Physiker. Die Programmiersprache C Ein- und Ausgabe Einführung in die Programmierung für Physiker Die Programmiersprache C Ein- und Ausgabe Marc Wagner Institut für theoretische Physik Johann Wolfgang Goethe-Universität Frankfurt am Main WS 2017/18 putchar,

Mehr

E-/A-Funktionalität nicht Teil der Programmiersprache

E-/A-Funktionalität nicht Teil der Programmiersprache C Ein-/Ausgabe C Ein-/Ausgabe C.1 Überblick E-/A-Funktionalität nicht Teil der Programmiersprache Realisisierung durch "normale" Funktionen Bestandteil der Standard-Funktionsbibliothek einfache Programmierschnittstelle

Mehr

Dateien (1) Datenströme

Dateien (1) Datenströme Dateien (1) Datenströme Standardbibliothek bietet sogenannte Datenströme (engl. Streams) Objekte, in die Informationen geschrieben oder von denen Daten gelesen werden können Zum Arbeiten mit Dateien benötigt

Mehr

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm K 9. Übung K 9. Übung K-1 Überblick Besprechung 7. Aufgabe (jbuffer) Unix, C und Sicherheit K.1 Mögliche Programmsequenz für eine Passwortabfrage in einem Server- Programm: int main (int argc, char *argv[])

Mehr

Tafelübung zu BS 3. Die Bibliothek

Tafelübung zu BS 3. Die Bibliothek Tafelübung zu BS 3. Die Bibliothek Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2010/bs/

Mehr

Tafelübung zu BSRvS 1 2. Prozesssynchronisation

Tafelübung zu BSRvS 1 2. Prozesssynchronisation Tafelübung zu BSRvS 1 2. Prozesssynchronisation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

Tafelübung zu BS 1. Prozesse, ToothBrush

Tafelübung zu BS 1. Prozesse, ToothBrush Tafelübung zu BS 1. Prozesse, ToothBrush Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

Wie man das Dateisystem in Deutschland versteht

Wie man das Dateisystem in Deutschland versteht E Dateisysteme E Dateisysteme E.1 Allgemeine Konzepte Einordnung Prozessor (CPU, Central processing unit) Hauptspeicher (Memory) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices) externe Schnittstellen

Mehr

Ausgewählte Bibliotheksfunktionen

Ausgewählte Bibliotheksfunktionen Ausgewählte Bibliotheksfunktionen fopen überträgt den Inhalt des Dateipuffers: Schreibmodus: Dateipuffer wird geschrieben Lesemodus: Puffer wird geleert if (fflush(fp) == EOF) printf("puffer nicht geschrieben\n");

Mehr

Fortgeschrittene I/O

Fortgeschrittene I/O Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

U23 - Shellcode. Twix Chaos Computer Club Cologne.  Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides Twix e.v. http://koeln.ccc.de 2016-11-28 Überblick 1 Motivation Was ist Shellcode? Beispiel 2 Einstieg Erzeugen, Testen von Shellcode 3 Der erste Shellcode Strings in Shellcode 4 Nullbytes, NOP Slides

Mehr

Operating Systems Principles. Event Queue

Operating Systems Principles. Event Queue Humboldt University Computer Science Department Operating Systems Principles Event Queue 1. Aufgabe 3 Wochen Zeit zum Lösen der Aufgaben Aufgabenstellung auf der SAR Website Abgabe über GOYA Abgabefrist:

Mehr

Input, Output, Dateien

Input, Output, Dateien Input, Output, Dateien C-Kurs 2013, 1. Tutorium Armelle Vérité http://wiki.freitagsrunde.org 8. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. 1 / 21

Mehr

Tafelübung zu BSRvS 1 3. Kreuzung

Tafelübung zu BSRvS 1 3. Kreuzung Tafelübung zu BSRvS 1 3. Kreuzung Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2009/bsrvs1/

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC) Übungen zu Systemnahe Programmierung in C (SPiC) Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2013 Inhalt Linux Terminal Arbeitsumgebung Manual Pages Fehlerbehandlung Bibliotheksfunktionen

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2013

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2013 Übungen zu Systemnahe Programmierung in C (SPiC) Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2013 Inhalt Linux Terminal Arbeitsumgebung Manual Pages Fehlerbehandlung Bibliotheksfunktionen

Mehr

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2) Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/

Mehr

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig (

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig ( 6 Ein- und Ausgabe Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig ( Drucken war hoffnungslos übertrieben); heute lernen wir, wie wir die Ergebnisse unserer Programme abspeichern können, um sie

Mehr

18.1 Überblick Überblick (3)

18.1 Überblick Überblick (3) Überblick: Teil D Betriebssystemabstraktionen 18.1 Überblick Einordnung 15 Nebenläufigkeit Prozessor (CPU, Central processing unit) 16 Ergänzungen zur Einführung in C 17 Betriebssysteme 18 Dateisysteme

Mehr

Tafelübung zu BS 2. Threadsynchronisation

Tafelübung zu BS 2. Threadsynchronisation Tafelübung zu BS 2. Threadsynchronisation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

Überblick: Teil D Betriebssystemabstraktionen

Überblick: Teil D Betriebssystemabstraktionen Überblick: Teil D Betriebssystemabstraktionen 15 Nebenläufigkeit 16 Ergänzungen zur Einführung in C 17 Betriebssysteme 18 Dateisysteme 19 Programme und Prozesse V_SPIC_handout 20 Speicherorganisation 21

Mehr

Malware. Carlo U. Nicola 09. Dezember Die Struktur eines (harmlosen) aber echten Virus-Programmes analysieren;

Malware. Carlo U. Nicola 09. Dezember Die Struktur eines (harmlosen) aber echten Virus-Programmes analysieren; FHNW: Labor Netzwerkssicherheit Malware Carlo U. Nicola 09. Dezember 2012 Ziel Die Ziele dieser Aufgabe sind: 1. Anhand der printf(...) C-Funktion erkennen, dass die (Un)-Sicherheit bereits implizit in

Mehr

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010 Ein- und Ausgabe C - Kurs 2010 Mario Bodemann 15. September 2010 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 1 / 46 Inhaltsverzeichnis 1 Wiederholung

Mehr

U6 Verzeichnisse und Sortieren

U6 Verzeichnisse und Sortieren U6 Verzeichnisse und Sortieren U6 Verzeichnisse und Sortieren Linux-Benutzerumgebung Fehlerbehandlung POSIX-Verzeichnis-Systemschnittstelle Datei-Attribute in Inodes U6.1 U6-1 Linux-Benutzerumgebung U6-1

Mehr

Hintergrundspeicher (Secondary storage) Katalog. SPiC

Hintergrundspeicher (Secondary storage) Katalog. SPiC J Dateisysteme J Dateisysteme J.2 Allgemeine Konzepte (3) J.2 Allgemeine Konzepte (2) J.1 Allgemeine Konzepte Einordnung Prozessor (CPU, Central processing unit) Datei speichert Daten oder Programme Katalog

Mehr

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010 Ein- und Ausgabe C - Kurs 2010 Mario Bodemann 15. September 2010 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License 1 / 46 Inhaltsverzeichnis 1 Wiederholung

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 11 Was bisher verschwiegen wurde Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Type qualifier Typen können mit folgenden

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 11 Was bisher verschwiegen wurde Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Type qualifier Typen können mit folgenden

Mehr

Installationsanleitung

Installationsanleitung 1. C Installationsanleitung C-Programmierung mit Hilfe von Eclipse unter Windows XP mit dem GNU C-Compiler (GCC) 2. Inhaltsverzeichnis 1. Einleitung... 3 2. Cygwin... 3 2.1 Cygwin-Installation... 3 2.2

Mehr

Organisatorisches. Übungsleiter: Karsten Otto Homepage: Aufgaben

Organisatorisches. Übungsleiter: Karsten Otto Homepage:  Aufgaben Organisatorisches Übungsleiter: Karsten Otto (otto@inf.fu-berlin.de) Homepage: http://www.inf.fu-berlin.de/lehre/ss04/sysi/ Aufgaben Montags im Netz Vorbesprechung Dienstag/Mittwoch in den Übungen Abgabe

Mehr

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 E-Uebung3.fm

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 E-Uebung3.fm E 3. Übung E 3. Übung Besprechung 1. Aufgabe Aufgabe 3: malloc Debugger gdb E.1 1. Include, Deklarationen #include #include void append_element(int value); int remove_element(void);

Mehr

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung.

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung. Dateioperationen Seite 1 von 12 Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung. z.b.: c:\testdateien\text.dat //Datendatei

Mehr

Lösung zur Praktikumsaufgabe 9

Lösung zur Praktikumsaufgabe 9 Lösung zur Praktikumsaufgabe 9 Thema: Pipes 2. Zur Beendigung des Programmes sind verschiedene Ansätze denkbar. Wenn explizit auf eine bestimmtes Symbol (z. B. quit, Leerzeile) getestet wird, dann darf

Mehr

Einteilung von Dateien. Streams

Einteilung von Dateien. Streams Einteilung von Dateien Streams allgemeines Modell für bewegte Daten, wobei Daten (Bytes) zwischen dem Hauptspeicher und einer Quelle oder einem Ziel bewegt werden Quelle oder Ziel können sein Datenträger

Mehr

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien Informatik I SS 2003 Dateioperationen 1 Textdateien, Öffnen Abspeichern und Einlesen von Texten (Strings) in Dateien 1. Das Öffnen einer Datei a) Deklaration eines Zeigers auf eine Datei FILE *pfile; b)

Mehr

Ulrich Stein

Ulrich Stein Von C nach MATLAB Einführung in MATLAB für Personen mit C-Kenntnissen Datentypen ähnlich in C und MATLAB, dort aber automatische Typzuweisung möglich double a = 2; Arrays a = double( 2 ); aber auch a =

Mehr

Betriebssysteme. A1- Prozesse. Olaf Spinczyk.

Betriebssysteme. A1- Prozesse. Olaf Spinczyk. Betriebssysteme A1- Prozesse https://ess.cs.tu-dortmund.de/de/teaching/ss2017/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik 12,

Mehr

Betriebssysteme. Einführung C. Olaf Spinczyk.

Betriebssysteme. Einführung C. Olaf Spinczyk. Betriebssysteme Einführung C http://ess.cs.tu-dortmund.de/de/teaching/ss2016/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik 12,

Mehr

Inhalt Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Terminal - historisches (etwas vereinfacht) Seriell. Computer. Netzwerk DFÜ.

Inhalt Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Terminal - historisches (etwas vereinfacht) Seriell. Computer. Netzwerk DFÜ. Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 5 Wintersemester 2015/2016 Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 2 21 Terminal

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 5. Wintersemester 2015/2016

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 5. Wintersemester 2015/2016 Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 5 Wintersemester 2015/2016 Inhalt Linux Fehlerbehandlung Aufgabe: cworld Anhang Lehrstuhl Informatik

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation 7. UNIX/Linux Pipes Wintersemester 2016/17 UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter Informationsaustausch: 5. 1.

Mehr

C-Kurs 2011: Arrays, Strings, Pointer

C-Kurs 2011: Arrays, Strings, Pointer C-Kurs 2011: Arrays, Strings, Pointer Sebastian@Pipping.org 15. September 2011 v3.0.33 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. Ohne Pointer geht nichts. 2 Pointer

Mehr

Mapra: C++ Teil 9. Felix Gruber, Sven Groß. 20. Juni IGPM, RWTH Aachen. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 9 20.

Mapra: C++ Teil 9. Felix Gruber, Sven Groß. 20. Juni IGPM, RWTH Aachen. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 9 20. Mapra: C++ Teil 9 Felix Gruber, Sven Groß IGPM, RWTH Aachen 20. Juni 2017 Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 9 20. Juni 2017 1 / 23 Themen vom letzten Mal Klassen Initialisierungsliste in Kontrollstrukturen

Mehr

Tafelübung zu BS 1. Prozesse verwalten

Tafelübung zu BS 1. Prozesse verwalten Tafelübung zu BS 1. Prozesse verwalten Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2015/bs/

Mehr

Linux. Fehlerbehandlung Sebastian Maier. Aufgabe: concat Übung 7 Anhang

Linux. Fehlerbehandlung Sebastian Maier. Aufgabe: concat Übung 7 Anhang Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier (Lehrstuhl Informatik 4) Übung 7 Sommersemester 2016 Lehrstuhl Informatik 4 Übungen zu SPiC (SS 2016) 2 23 Terminal - historisches (etwas

Mehr

Terminal - historisches (etwas vereinfacht)

Terminal - historisches (etwas vereinfacht) Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier (Lehrstuhl Informatik 4) Übung 7 Sommersemester 2016 Inhalt Linux Fehlerbehandlung Aufgabe: concat Anhang Hands-on: Buffer Overflow Lehrstuhl

Mehr

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public

Mehr

U6 Verzeichnisse und Sortieren U6 Verzeichnisse und Sortieren

U6 Verzeichnisse und Sortieren U6 Verzeichnisse und Sortieren U6 Verzeichnisse und Sortieren U6 Verzeichnisse und Sortieren Wiederholung: Gültigkeitsbereiche & Module Linux-Benutzerumgebung Fehlerbehandlung POSIX-Verzeichnis-Systemschnittstelle Datei-Attribute in

Mehr

Tafelübung zu BS 1. Prozesse verwalten

Tafelübung zu BS 1. Prozesse verwalten Tafelübung zu BS 1. Prozesse verwalten Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2013/bs/

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main Vorbemerkungen

Mehr

Betriebssysteme. A1- Prozesse. Olaf Spinczyk.

Betriebssysteme. A1- Prozesse. Olaf Spinczyk. Betriebssysteme A1- Prozesse https://ess.cs.tu-dortmund.de/de/teaching/ss2018/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik 12,

Mehr

Übungen zur Systemprogrammierung 1 Michael Golm, Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4,

Übungen zur Systemprogrammierung 1 Michael Golm, Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 23 Überblick über die 4. Übung Überblick über die 4. Übung Dateisystem: Systemaufrufe Aufgabe 2: qsort Infos zur Aufgabe 4: fork, exec 130 24 open / close read / write lseek chmod umask utime truncate

Mehr

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 9.1.2013 IAM Institut für Angewandte Mathematik Fortgeschrittene Ein- und Ausgabe Bisher: Ein- und Ausgabe nur über die Kommandozeile Erweiterung: Konzept

Mehr

Mapra: C++ Teil 7. Felix Gruber. 3. Juni IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 7 3.

Mapra: C++ Teil 7. Felix Gruber. 3. Juni IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 7 3. Mapra: C++ Teil 7 Felix Gruber IGPM, RWTH Aachen 3. Juni 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 7 3. Juni 2015 1 / 22 Themen vom letzten Mal Wiederholung Klassen this-pointer Virtuelle Methoden

Mehr

Aufgabenblatt 5 Musterlösung

Aufgabenblatt 5 Musterlösung Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 5 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2017/18 Aufgabe 1: Implementierung von Threads (Bearbeitung zu Hause) Der größte Vorteil ist

Mehr

Probeklausur Name: (c)

Probeklausur Name: (c) Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume

Mehr