Bücher Wenner

Technik, Computer & Digitalfotografie / Betriebssysteme / Linux
Olga Grjasnowa liest aus "JULI, AUGUST, SEPTEMBER
04.02.2025 um 19:30 Uhr
Systemnahe Programmierung mit C und Linux
Das umfassende Handbuch zur Linux-Anwendungsprogrammierung
von Jürgen Wolf, René Krooß
Verlag: Rheinwerk Verlag GmbH
Reihe: Rheinwerk Computing
Gebundene Ausgabe
ISBN: 978-3-8362-9748-6
Auflage: 5. Auflage
Erschienen am 01.02.2024
Sprache: Deutsch
Format: 246 mm [H] x 204 mm [B] x 65 mm [T]
Gewicht: 2298 Gramm
Umfang: 1386 Seiten

Preis: 59,90 €
keine Versandkosten (Inland)


Bei uns vorrätig (1. Obergeschoss)

Der Versand innerhalb der Stadt erfolgt in Regel am gleichen Tag.
Der Versand nach außerhalb dauert mit Post/DHL meistens 1-2 Tage.

59,90 €
merken
zum E-Book (EPUB) 41,93 €
klimaneutral
Der Verlag produziert nach eigener Angabe noch nicht klimaneutral bzw. kompensiert die CO2-Emissionen aus der Produktion nicht. Daher übernehmen wir diese Kompensation durch finanzielle Förderung entsprechender Projekte. Mehr Details finden Sie in unserer Klimabilanz.
Biografische Anmerkung
Inhaltsverzeichnis
Klappentext

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.




  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



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



andere Formate
ähnliche Titel
weitere Titel der Reihe