Systemnahe Programmierung mit C und Linux

Das umfassende Handbuch zur Linux-Anwendungsprogrammierung
Sofort lieferbar | Lieferzeit: Sofort lieferbar I
ISBN-13:
9783836297486
Veröffentl:
2024
Erscheinungsdatum:
01.02.2024
Seiten:
1386
Autor:
Jürgen Wolf
Gewicht:
2298 g
Format:
246x204x65 mm
Serie:
Rheinwerk Computing
Sprache:
Deutsch
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 topaktuelle 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.
Datenbanken, Terminal E/A, Werkzeuge, Sicherheit
Materialien zum Buch ... 231. Einführung ... 251.1 ... Anforderungen an den Leser ... 251.2 ... Anforderungen an das Betriebssystem ... 261.3 ... UNIX, der Vorgänger von Linux ... 271.4 ... Die Entwicklung von Linux ... 291.5 ... Der Compiler GCC -- eine kurze Einführung ... 311.6 ... POSIX, X/OPEN und ANSI C ... 371.7 ... Übersicht zu diesem Buch ... 401.8 ... Schreibkonventionen ... 421.9 ... Weitere Hilfen ... 432. E/A-Funktionen ... 452.1 ... Elementare E/A-Funktionen ... 452.2 ... Filedeskriptoren ... 472.3 ... Funktionen, die einen Filedeskriptor verwenden ... 502.4 ... Standard-E/A-Funktionen ... 992.5 ... Die Arbeit mit Verzeichnissen ... 1132.6 ... Fehlerbehandlung ... 1342.7 ... Ausblick ... 1373. Attribute von Dateien und Verzeichnissen abfragen und ändern ... 1393.1 ... Die Struktur stat ... 1394. Zugriff auf Systeminformationen ... 1574.1 ... Informationen aus dem /proc-Verzeichnis herausziehen ... 1574.2 ... Hardware-/Systeminformationen ermitteln ... 1604.3 ... Prozessinformationen auslesen ... 1664.4 ... Kernel-Informationen in /proc ... 1714.5 ... Verschiedene Dateisysteme unter Linux verwalten ... 1804.6 ... Weiterführendes ... 1815. Devices -- eine einfache Verbindung zur Hardware ... 1835.1 ... Die Gerätedateitypen ... 1835.2 ... Die Gerätedateinummern ... 1855.3 ... Zugriff auf die Gerätedateien ... 1865.4 ... Gerätenamen ... 1885.5 ... Spezielle Gerätedateien ... 1905.6 ... Gerätedateien in der Praxis einsetzen ... 1916. System- und Benutzerdateien ... 2276.1 ... Die Datei /etc/passwd ... 2276.2 ... Die Datei /etc/shadow ... 2346.3 ... Die Datei /etc/group ... 2396.4 ... uname -- Informationen zum lokalen System erfragen ... 2436.5 ... Das Verzeichnis /etc/skel und Network Information Service (NIS) ... 2456.6 ... Dateien für Netzwerkinformationen ... 2467. Prozesse, Dämonen und Zombies ... 2477.1 ... Was ist ein Prozess? ... 2477.2 ... Prozesskomponente ... 2487.3 ... Prozesse überwachen mit ps, top und kpm ... 2587.4 ... Der Lebenszyklus eines Prozesses ... 2617.5 ... Umgebungsvariablen eines Prozesses ... 2637.6 ... Ressourcenlimits eines Prozesses ... 2717.7 ... Prozesserkennung ... 2757.8 ... Erzeugung von neuen Prozessen mit fork() ... 2777.9 ... Warten auf einen anderen Prozess ... 2887.10 ... Die exec-Familie ... 2967.11 ... Kommandoaufrufe aus dem Programm -- system() ... 3027.12 ... Dämonprozesse ... 3047.13 ... Mehr über die Ausführung von Prozessen ... 3157.14 ... Zusammenfassung und Ausblick ... 3308. Signale ... 3318.1 ... Grundlagen zu den Signalen ... 3318.2 ... Das neue Signalkonzept ab Kernel 2.6.18 ... 3388.3 ... Die Signalmenge initialisieren ... 3398.4 ... Elemente zu der Signalmenge hinzufügen oder aus ihr entfernen ... 3398.5 ... Signale einrichten und abfragen ... 3408.6 ... Signale an andere Prozesse senden mit kill() ... 3478.7 ... Eine Zeitschaltuhr einrichten mit alarm() ... 3488.8 ... Prozesse stoppen, bis ein Signal eintritt, mit pause() ... 3498.9 ... Prozesse für eine bestimmte Zeit stoppen mit sleep() und usleep() ... 3498.10 ... Die Signalmaske erfragen oder ändern mit sigprocmask() ... 3508.11 ... Einen Prozess während einer Änderung der Signalmaske stoppen mit sigsuspend() ... 3518.12 ... Prozesse synchronisieren ... 3519. IPC -- Interprozesskommunikation ... 3559.1 ... Unterschiedliche Interprozesskommunikations-Techniken im Überblick ... 3569.2 ... Gründe für IPC ... 3649.3 ... Pipes ... 3659.4 ... System-V-Interprozesskommunikation ... 4089.5 ... Semaphore ... 4109.6 ... Message Queues ... 4199.7 ... Shared Memory ... 43210. Threads ... 44310.1 ... Unterschiede zwischen Threads und Prozessen ... 44310.2 ... Thread-Bibliotheken ... 44410.3 ... Kernel- und User-Threads ... 44510.4 ... Scheduling und Zustände von Threads ... 44510.5 ... Die grundlegenden Funktionen der Thread-Programmierung ... 44710.6 ... Die Attribute von Threads und das Scheduling ... 45910.7 ... Threads synchronisieren ... 46510.8 ... Threads abbrechen (canceln) ... 49310.9 ... Erzeugen von threadspezifischen Daten (TSD) ... 49810.10 ... Mit pthread_once() einen Codeabschnitt auf einmal ausführen ... 50110.11 ... Thread-safe-Funktionen (thread-sichere Funktionen) ... 50410.12 ... Threads und Signale ... 50510.13 ... Zusammenfassung und Ausblick ... 51011. Netzwerkprogrammierung ... 51311.1 ... Einführung ... 51311.2 ... Aufbau von Netzwerken ... 51411.3 ... TCP/IP -- Aufbau und Struktur ... 52011.4 ... TCP-Socket ... 52411.5 ... Das Kommunikationsmodell der Sockets ... 52511.6 ... Grundlegende Funktionen zum Zugriff auf die Socket-Schnittstelle ... 52511.7 ... Aufbau eines Clientprogramms ... 53511.8 ... Aufbau des Serverprogramms ... 54011.9 ... IP-Adressen konvertieren, manipulieren und extrahieren ... 54511.10 ... Namen und IP-Adressen ineinander umwandeln ... 55211.11 ... Pufferung bei Netzwerk-Sockets ... 56211.12 ... Standard-E/A-Funktionen verwenden ... 56311.13 ... Parallele Server ... 56511.14 ... Synchrones Multiplexing mit select() ... 58211.15 ... POSIX-Threads und Netzwerkprogrammierung ... 60411.16 ... Optionen für Sockets setzen und abfragen ... 61011.17 ... Das UDP-Protokoll (User Datagram Protocol) ... 61511.18 ... Unix Domain Sockets ... 62411.19 ... Multicast-Socket ... 63011.20 ... Nicht blockierende I/O-Sockets ... 63911.21 ... Streams, TLI, Raw Socket und XTI ... 64211.22 ... IPv4 und IPv6 ... 64411.23 ... Netzwerksoftware nach IPv6 portieren ... 64611.24 ... Sicherheit und Verschlüsselung ... 64712. MySQL und PostgreSQL ... 64912.1 ... Relationale Datenbanksysteme ... 64912.2 ... Der relationale Datenbankserver ... 65312.3 ... SQL-Server im Überblick ... 65312.4 ... Die MySQL-Datenbank ... 65412.5 ... Die MySQL-C-API ... 68412.6 ... Beispiel: Ein einfaches Newssystem ... 72812.7 ... Neue SQL-Funktionen für die Shell -- MySQL erweitern ... 75912.8 ... MySQL-Funktionen mit der UDF-Schnittstelle entwerfen ... 76012.9 ... PostgreSQL: Ein objektrelationales Datenbankverwaltungssystem ... 77113. Terminal-E/A und Benutzerschnittstellen für die Konsole ... 81313.1 ... termios ... 81313.2 ... Terminalinformationen in terminfo ... 83713.3 ... Halbgrafik erstellen mit ncurses ... 84714. GTK+ ... 89114.1 ... Was ist GTK+? ... 89114.2 ... GTK+-Anwendungen übersetzen ... 89614.3 ... Eine Einführung in die GLib-Bibliothek ... 89714.4 ... Grundlagen der GTK+-Programmierung ... 92314.5 ... Fenster anlegen mit GtkWindow ... 93514.6 ... Anzeigeelemente ... 94414.7 ... Behälter für Widgets ... 95314.8 ... Buttons und Toggled-Buttons ... 96714.9 ... Dateneingaben auswerten ... 97714.10 ... Menüs und Toolbars erstellen ... 98914.11 ... Mehrzeiligen Text erstellen ... 100914.12 ... Auswählen von Widgets (Selection) ... 102314.13 ... Events auswerten ... 103314.14 ... Weitere Widget- und GTK+-Elemente im Überblick ... 103915. Übersicht über weitere beliebte GUI-Bibliotheken ... 104315.1 ... gtkmm -- GTK+ für C++ ... 104315.2 ... wxWidgets ... 104715.3 ... FLTK ... 105115.4 ... Qt ... 105315.5 ... Die niedrige Ebene: X-Window-Programmierung ... 105615.6 ... Multimediabibliotheken ... 105716. Werkzeuge für Programmierer ... 106516.1 ... Der Compiler GCC ... 106516.2 ... make ... 107416.3 ... Eigene Bibliotheken erstellen ... 109116.4 ... RPM-Pakete ... 110116.5 ... RCS und CVS ... 111416.6 ... Laufzeitmessung von Programmen ... 114316.7 ... Debuggen mit GDB und DDD ... 115116.8 ... STRACE -- Systemaufrufe verfolgen ... 116416.9 ... Memory Leaks und unerlaubte Speicherzugriffe ... 116716.10 ... Ausblick ... 1175Anhang ... 1177A ... Sicherheit unter Linux ... 1179B ... Funktionsreferenz ... 1201C ... Linux/UNIX-Kommandoreferenz ... 1283Index ... 1365

Kunden Rezensionen

Zu diesem Artikel ist noch keine Rezension vorhanden.
Helfen sie anderen Besuchern und verfassen Sie selbst eine Rezension.

Google Plus
Powered by Inooga