0

Systemnahe Programmierung mit C und Linux

Das umfassende Handbuch zur Linux-Anwendungsprogrammierung

Erschienen am 01.02.2024
CHF 78,00
(inkl. MwSt.)
UVP

Lieferbar innerhalb 36 Stunden

In den Warenkorb
Bibliografische Daten
ISBN/EAN: 9783836297486
Sprache: Deutsch
Umfang: 1386
Format (T/L/B): 24.0 x 19.0 cm
Auflage: 5. Auflage
Einband: Gebunden

Beschreibung

Alles zur systemnahen Anwendungsprogrammierung: von den E/A-Funktionen, dem Zugriff auf Systeminformationen über Prozesse, Signale, Interprozesskommunikation und Threads bis hin zu Netzwerkprogrammierung, Datenbanken und GUIs. Für alle, die Programme schreiben wollen und alte Software warten oder portieren müssen. Alle Beispiele sind auch auf dem Raspberry Pi ausführbar. Solide C- und Linux-Kenntnisse werden vorausgesetzt. Aus dem Inhalt: E/AFunktionenAttribute von Dateien und VerzeichnissenZugriff auf SysteminformationenDevices eine einfache Verbindung zur HardwareSystem und BenutzerdateienDämonen, Zombies und ProzesseSignaleIPC InterprozesskommunikationThreadsNetzwerkprogrammierungDatenbanken (MySQL, PostgreSQL)GUIs mit GTK+Werkzeuge für Programmierer

Inhalt

       1.1 ... Anforderungen an den Leser ... 25        1.2 ... Anforderungen an das Betriebssystem ... 26        1.3 ... UNIX, der Vorgänger von Linux ... 27        1.4 ... Die Entwicklung von Linux ... 29        1.5 ... Der Compiler GCC -- eine kurze Einführung ... 31        1.6 ... POSIX, X/OPEN und ANSI C ... 37        1.7 ... Übersicht zu diesem Buch ... 40        1.8 ... Schreibkonventionen ... 42        1.9 ... Weitere Hilfen ... 43        2.1 ... Elementare E/A-Funktionen ... 45        2.2 ... Filedeskriptoren ... 47        2.3 ... Funktionen, die einen Filedeskriptor verwenden ... 50        2.4 ... Standard-E/A-Funktionen ... 99        2.5 ... Die Arbeit mit Verzeichnissen ... 113        2.6 ... Fehlerbehandlung ... 134        2.7 ... Ausblick ... 137        3.1 ... Die Struktur stat ... 139        4.1 ... Informationen aus dem /proc-Verzeichnis herausziehen ... 157        4.2 ... Hardware-/Systeminformationen ermitteln ... 160        4.3 ... Prozessinformationen auslesen ... 166        4.4 ... Kernel-Informationen in /proc ... 171        4.5 ... Verschiedene Dateisysteme unter Linux verwalten ... 180        4.6 ... Weiterführendes ... 181        5.1 ... Die Gerätedateitypen ... 183        5.2 ... Die Gerätedateinummern ... 185        5.3 ... Zugriff auf die Gerätedateien ... 186        5.4 ... Gerätenamen ... 188        5.5 ... Spezielle Gerätedateien ... 190        5.6 ... Gerätedateien in der Praxis einsetzen ... 191        6.1 ... Die Datei /etc/passwd ... 227        6.2 ... Die Datei /etc/shadow ... 234        6.3 ... Die Datei /etc/group ... 239        6.4 ... uname -- Informationen zum lokalen System erfragen ... 243        6.5 ... Das Verzeichnis /etc/skel und Network Information Service (NIS) ... 245        6.6 ... Dateien für Netzwerkinformationen ... 246        7.1 ... Was ist ein Prozess? ... 247        7.2 ... Prozesskomponente ... 248        7.3 ... Prozesse überwachen mit ps, top und kpm ... 258        7.4 ... Der Lebenszyklus eines Prozesses ... 261        7.5 ... Umgebungsvariablen eines Prozesses ... 263        7.6 ... Ressourcenlimits eines Prozesses ... 271        7.7 ... Prozesserkennung ... 275        7.8 ... Erzeugung von neuen Prozessen mit fork() ... 277        7.9 ... Warten auf einen anderen Prozess ... 288        7.10 ... Die exec-Familie ... 296        7.11 ... Kommandoaufrufe aus dem Programm -- system() ... 302        7.12 ... Dämonprozesse ... 304        7.13 ... Mehr über die Ausführung von Prozessen ... 315        7.14 ... Zusammenfassung und Ausblick ... 330        8.1 ... Grundlagen zu den Signalen ... 331        8.2 ... Das neue Signalkonzept ab Kernel 2.6.18 ... 338        8.3 ... Die Signalmenge initialisieren ... 339        8.4 ... Elemente zu der Signalmenge hinzufügen oder aus ihr entfernen ... 339        8.5 ... Signale einrichten und abfragen ... 340        8.6 ... Signale an andere Prozesse senden mit kill() ... 347        8.7 ... Eine Zeitschaltuhr einrichten mit alarm() ... 348        8.8 ... Prozesse stoppen, bis ein Signal eintritt, mit pause() ... 349        8.9 ... Prozesse für eine bestimmte Zeit stoppen mit sleep() und usleep() ... 349        8.10 ... Die Signalmaske erfragen oder ändern mit sigprocmask() ... 350        8.11 ... Einen Prozess während einer Änderung der Signalmaske stoppen mit sigsuspend() ... 351        8.12 ... Prozesse synchronisieren ... 351        9.1 ... Unterschiedliche Interprozesskommunikations-Techniken im Überblick ... 356        9.2 ... Gründe für IPC ... 364        9.3 ... Pipes ... 365        9.4 ... System-V-Interprozesskommunikation ... 408        9.5 ... Semaphore ... 410        9.6 ... Message Queues ... 419        9.7 ... Shared Memory ... 432        10.1 ... Unterschiede zwischen Threads und Prozessen ... 443        10.2 ... Thread-Bibliotheken ... 444        10.3 ... Kernel- und User-Threads ... 445        10.4 ... Scheduling und Zustände von Threads ... 445        10.5 ... Die grundlegenden Funktionen der Thread-Programmierung ... 447        10.6 ... Die Attribute von Threads und das Scheduling ... 459        10.7 ... Threads synchronisieren ... 465        10.8 ... Threads abbrechen (canceln) ... 493        10.9 ... Erzeugen von threadspezifischen Daten (TSD) ... 498        10.10 ... Mit pthread_once() einen Codeabschnitt auf einmal ausführen ... 501        10.11 ... Thread-safe-Funktionen (thread-sichere Funktionen) ... 504        10.12 ... Threads und Signale ... 505        10.13 ... Zusammenfassung und Ausblick ... 510        11.1 ... Einführung ... 513        11.2 ... Aufbau von Netzwerken ... 514        11.3 ... TCP/IP -- Aufbau und Struktur ... 520        11.4 ... TCP-Socket ... 524        11.5 ... Das Kommunikationsmodell der Sockets ... 525        11.6 ... Grundlegende Funktionen zum Zugriff auf die Socket-Schnittstelle ... 525        11.7 ... Aufbau eines Clientprogramms ... 535        11.8 ... Aufbau des Serverprogramms ... 540        11.9 ... IP-Adressen konvertieren, manipulieren und extrahieren ... 545        11.10 ... Namen und IP-Adressen ineinander umwandeln ... 552        11.11 ... Pufferung bei Netzwerk-Sockets ... 562        11.12 ... Standard-E/A-Funktionen verwenden ... 563        11.13 ... Parallele Server ... 565        11.14 ... Synchrones Multiplexing mit select() ... 582        11.15 ... POSIX-Threads und Netzwerkprogrammierung ... 604        11.16 ... Optionen für Sockets setzen und abfragen ... 610        11.17 ... Das UDP-Protokoll (User Datagram Protocol) ... 615        11.18 ... Unix Domain Sockets ... 624        11.19 ... Multicast-Socket ... 630        11.20 ... Nicht blockierende I/O-Sockets ... 639        11.21 ... Streams, TLI, Raw Socket und XTI ... 642        11.22 ... IPv4 und IPv6 ... 644        11.23 ... Netzwerksoftware nach IPv6 portieren ... 646        11.24 ... Sicherheit und Verschlüsselung ... 647        12.1 ... Relationale Datenbanksysteme ... 649        12.2 ... Der relationale Datenbankserver ... 653        12.3 ... SQL-Server im Überblick ... 653        12.4 ... Die MySQL-Datenbank ... 654        12.5 ... Die MySQL-C-API ... 684        12.6 ... Beispiel: Ein einfaches Newssystem ... 728        12.7 ... Neue SQL-Funktionen für die Shell -- MySQL erweitern ... 759        12.8 ... MySQL-Funktionen mit der UDF-Schnittstelle entwerfen ... 760        12.9 ... PostgreSQL: Ein objektrelationales Datenbankverwaltungssystem ... 771        13.1 ... termios ... 813        13.2 ... Terminalinformationen in terminfo ... 837        13.3 ... Halbgrafik erstellen mit ncurses ... 847        14.1 ... Was ist GTK+? ... 891        14.2 ... GTK+-Anwendungen übersetzen ... 896        14.3 ... Eine Einführung in die GLib-Bibliothek ... 897        14.4 ... Grundlagen der GTK+-Programmierung ... 923        14.5 ... Fenster anlegen mit GtkWindow ... 935        14.6 ... Anzeigeelemente ... 944        14.7 ... Behälter für Widgets ... 953        14.8 ... Buttons und Toggled-Buttons ... 967        14.9 ... Dateneingaben auswerten ... 977        14.10 ... Menüs und Toolbars erstellen ... 989        14.11 ... Mehrzeiligen Text erstellen ... 1009        14.12 ... Auswählen von Widgets (Selection) ... 1023        14.13 ... Events auswerten ... 1033        14.14 ... Weitere Widget- und GTK+-Elemente im Überblick ... 1039        15.1 ... gtkmm -- GTK+ für C++ ... 1043        15.2 ... wxWidgets ... 1047        15.3 ... FLTK ... 1051        15.4 ... Qt ... 1053        15.5 ... Die niedrige Ebene: X-Window-Programmierung ... 1056        15.6 ... Multimediabibliotheken ... 1057        16.1 ... Der Compiler GCC ... 1065        16.2 ... make ... 1074        16.3 ... Eigene Bibliotheken erstellen ... 1091        16.4 ... RPM-Pakete ... 1101        16.5 ... RCS und CVS ... 1114        16.6 ... Laufzeitmessung von Programmen ... 1143        16.7 ... Debuggen mit GDB und DDD ... 1151        16.8 ... STRACE -- Systemaufrufe verfolgen ... 1164        16.9 ... Memory Leaks und unerlaubte Speicherzugriffe ... 1167        16.10 ... Ausblick ... 1175        A ... Sicherheit unter Linux ... 1179        B ... Funktionsreferenz ... 1201        C ... Linux/UNIX-Kommandoreferenz ... 1283

Weitere Artikel vom Autor "Wolf, Jürgen"

Alle Artikel anzeigen

Weitere Artikel aus der Kategorie "Informatik & EDV"

Lieferbar innerhalb 36 Stunden

CHF 31,50
inkl. MwSt.
UVP

Nicht mehr lieferbar

CHF 17,90
inkl. MwSt.
UVP

Lieferbar innerhalb 36 Stunden

CHF 46,00
inkl. MwSt.
UVP

Nicht mehr lieferbar

CHF 28,90
inkl. MwSt.
UVP

Lieferbar innerhalb 36 Stunden

CHF 28,90
inkl. MwSt.
UVP
Alle Artikel anzeigen