Jürgen Wolf, René Krooß

Systemnahe Programmierung mit C und Linux

Das umfassende Handbuch zur Linux-Anwendungsprogrammierung. 5. Auflage. 24,6 cm / 20,4 cm / 6,5 cm ( B/H/T )
Buch (Hardcover), 1386 Seiten
EAN 9783836297486
Veröffentlicht Februar 2024
Verlag/Hersteller Rheinwerk Verlag GmbH
Leseprobe öffnen

Auch erhältlich als:

eBook (epub)
47,92
59,90 inkl. MwSt.
Sofort lieferbar (Versand mit Deutscher Post/DHL)
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 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.
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

Hersteller
Rheinwerk Verlag GmbH
Rheinwerkallee 4

DE - 53227 Bonn

E-Mail: Info@rheinwerk-verlag.de

Das könnte Sie auch interessieren

Julia Ruhs
Links-grüne Meinungsmacht
Buch (Softcover)
Sofort lieferbar
20,00
Sarah Kuttner
Mama & Sam
Buch (Hardcover)
Sofort lieferbar
24,00
Aldous Huxley
Zeit der Oligarchen
Buch (Hardcover)
Sofort lieferbar
14,00
Tim Berners-Lee
This Is for Everyone
Buch (Hardcover)
Sofort lieferbar
28,00
Katharina Zweig
Weiß die KI, dass sie nichts weiß?
Buch (Softcover)
Sofort lieferbar
20,00
Marc-Uwe Kling
Der Tag, an dem die Oma das Internet kaputt...
Buch (Hardcover)
Sofort lieferbar
12,00
Martin Andree
Krieg der Medien
Buch (Hardcover)
Sofort lieferbar
28,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
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
Keach Hagey
Sam Altman
Buch (Hardcover)
Sofort lieferbar
28,00
Robert Klaßen
Windows 11
Buch (Softcover)
Sofort lieferbar
12,90
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
Lieferbar innerhalb von 1-2 Wochen
19,95
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
Uwe Albrecht
iPhone und iPad
Buch (Softcover)
Lieferbar innerhalb von 1-2 Wochen
19,90