Jürgen Wolf, René Krooß

Systemnahe Programmierung mit C und Linux

Das umfassende Handbuch. 5. Auflage
eBook (epub), 1386 Seiten
EAN 9783836297509
Veröffentlicht Februar 2024
Verlag/Hersteller Rheinwerk eBooks

Auch erhältlich als:

Buch (Hardcover)
59,90
47,92 inkl. MwSt.
Sofort Lieferbar (Download)
Teilen
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/A-Funktionen - Attribute von Dateien und Verzeichnissen - Zugriff auf Systeminformationen - Devices - eine einfache Verbindung zur Hardware - System- und Benutzerdateien - Dämonen, Zombies und Prozesse - Signale - IPC - Interprozesskommunikation - Threads - Netzwerkprogrammierung - Datenbanken (MySQL, PostgreSQL) - GUIs mit GTK+ - Werkzeuge für Programmierer

Portrait

Jürgen Wolf ist seit über 16 Jahren Autor und seit mehr als 10 Jahren passionierter Digitalfotograf. Seine Buchthemen sind Bildbearbeitung, Fotografie, Webentwicklung, Betriebssysteme und Programmierung. Und egal welches Thema: Bei jedem Buch ist es sein Ziel, auch komplexe Zusammenhänge klar und verständlich zu erklären.

Inhaltsverzeichnis

Materialien zum Buch ... 23 1. Einführung ... 25 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. E/A-Funktionen ... 45 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. Attribute von Dateien und Verzeichnissen abfragen und ändern ... 139 3.1 ... Die Struktur stat ... 139 4. Zugriff auf Systeminformationen ... 157 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. Devices -- eine einfache Verbindung zur Hardware ... 183 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. System- und Benutzerdateien ... 227 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. Prozesse, Dämonen und Zombies ... 247 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. Signale ... 331 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. IPC -- Interprozesskommunikation ... 355 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. Threads ... 443 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. Netzwerkprogrammierung ... 513 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. MySQL und PostgreSQL ... 649 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. Terminal-E/A und Benutzerschnittstellen für die Konsole ... 813 13.1 ... termios ... 813 13.2 ... Terminalinformationen in terminfo ... 837 13.3 ... Halbgrafik erstellen mit ncurses ... 847 14. GTK+ ... 891 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. Übersicht über weitere beliebte GUI-Bibliotheken ... 1043 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. Werkzeuge für Programmierer ... 1065 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 Anhang ... 1177 A ... Sicherheit unter Linux ... 1179 B ... Funktionsreferenz ... 1201 C ... Linux/UNIX-Kommandoreferenz ... 1283 Index ... 1365

Technik
Sie können dieses eBook zum Beispiel mit den folgenden Geräten lesen:
• tolino Reader 
Laden Sie das eBook direkt über den Reader-Shop auf dem tolino herunter oder übertragen Sie das eBook auf Ihren tolino mit einer kostenlosen Software wie beispielsweise Adobe Digital Editions. 
• Sony Reader & andere eBook Reader 
Laden Sie das eBook direkt über den Reader-Shop herunter oder übertragen Sie das eBook mit der kostenlosen Software Sony READER FOR PC/Mac oder Adobe Digital Editions auf ein Standard-Lesegeräte. 
• Tablets & Smartphones 
Möchten Sie dieses eBook auf Ihrem Smartphone oder Tablet lesen, finden Sie hier unsere kostenlose Lese-App für iPhone/iPad und Android Smartphone/Tablets. 
• PC & Mac 
Lesen Sie das eBook direkt nach dem Herunterladen mit einer kostenlosen Lesesoftware, beispielsweise Adobe Digital Editions, Sony READER FOR PC/Mac oder direkt über Ihre eBook-Bibliothek in Ihrem Konto unter „Meine eBooks“ -  „online lesen“.
 
Bitte beachten Sie, dass die Kindle-Geräte das Format nicht unterstützen und dieses eBook somit nicht auf Kindle-Geräten lesbar ist.
Hersteller
Libri GmbH
Friedensallee 273

DE - 22763 Hamburg

E-Mail: GPSR@libri.de

Website: www.libri.de

Das könnte Sie auch interessieren

Aldous Huxley
Zeit der Oligarchen
Buch (Hardcover)
Sofort lieferbar
14,00
Julia Ruhs
Links-grüne Meinungsmacht
Buch (Softcover)
Sofort lieferbar
20,00
Sarah Kuttner
Mama & Sam
Buch (Hardcover)
Sofort lieferbar
24,00
Katharina Zweig
Weiß die KI, dass sie nichts weiß?
Buch (Softcover)
Sofort lieferbar
20,00
Martin Andree
Krieg der Medien
Buch (Hardcover)
Sofort lieferbar
28,00
Tim Berners-Lee
This Is for Everyone
Buch (Hardcover)
Sofort lieferbar
28,00
Marc-Uwe Kling
Der Tag, an dem die Oma das Internet kaputt...
Buch (Hardcover)
Sofort lieferbar
12,00
Sofort lieferbar
3,50
Christoph Engemann
Die Zukunft des Lesens
Buch (Softcover)
Sofort lieferbar
14,00
Annekathrin Kohout
Hyperreaktiv
Buch (Softcover)
Sofort lieferbar
18,00
Aya Jaff
Broligarchie
Buch (Hardcover)
Lieferbar innerhalb von 1-2 Wochen
23,99
Sofort lieferbar
19,90
Frank-Michael Becker
Formelsammlung bis zum Abitur - Mathematik ...
Buch (Softcover)
Sofort lieferbar
16,50
Jörg Rieger Espind...
Windows 11 für Senioren
Buch (Softcover)
Sofort lieferbar
19,90
Keach Hagey
Sam Altman
Buch (Hardcover)
Sofort lieferbar
28,00
Jimmy Wales
TRUST
Buch (Hardcover)
Sofort lieferbar
24,00
Cornelia Lohs
Der inoffizielle James Bond Reiseführer
Buch (Softcover)
Lieferbar innerhalb von 1-2 Wochen
19,99
Johannes Knörzer
Ein Quantum Zukunft - Quantenphysik und Qua...
Buch (Softcover)
Lieferbar innerhalb von 5-7 Tagen
24,99
Ingo Dachwitz
Digitaler Kolonialismus
Buch (Hardcover)
Sofort lieferbar
28,00
Robert Klaßen
Windows 11
Buch (Softcover)
Sofort lieferbar
12,90
Lieferbar innerhalb von 1-2 Wochen
19,95
Lieferbar innerhalb von 1-2 Wochen
28,99
Rainer Hattenhauer
ChatGPT u. Co.
Buch (Softcover)
Sofort lieferbar
24,90
Ursula Poznanski
Erebos 2
Buch (Hardcover)
Sofort lieferbar
19,95
Albert Wiedemann
Informatik (Oldenbourg) Band 7: Grundkurs ...
Buch (Hardcover)
Lieferbar innerhalb von 2 Wochen
33,50
Oliver Bock
ChatGPT - Das Praxisbuch
Buch (Softcover)
Sofort lieferbar
19,95
Johanna Pirker
The Game is On
Buch (Hardcover)
Sofort lieferbar
26,00
Steffen Mau
Triggerpunkte
Buch (Softcover)
Lieferbar innerhalb von 1-2 Wochen
25,00
Inga Strümke
Künstliche Intelligenz
Buch (Hardcover)
Sofort lieferbar
24,90
Vera Weidenbach
Ada Lovelace
Buch (Hardcover)
Sofort lieferbar
24,00
@Kriegundfreitag
Psyche, du kleiner Schlingel
Buch (Hardcover)
Sofort lieferbar
14,00
Kim Beck
Basiskurs Medienbildung.Gesamtkurs
Buch (Softcover)
Sofort lieferbar
8,00
Douglas Rushkoff
Survival of the Richest
Buch (Softcover)
Lieferbar innerhalb von 1-2 Wochen
22,00
Sofort lieferbar
24,30
Bernhard Pörksen
Zuhören
Buch (Hardcover)
Sofort lieferbar
24,00
Tara-Louise Wittwer
Sorry, aber ...
Buch (Softcover)
Lieferbar innerhalb von 1-2 Wochen
18,00