Systemnahe Programmierung mit C und Linux

Systemnahe Programmierung mit C und Linux

Das umfassende Handbuch zur Linux-Anwendungsprogrammierung

Aus der Reihe

59,90 €

inkl. gesetzl. MwSt.

Systemnahe Programmierung mit C und Linux

Ebenfalls verfügbar als:

Gebundenes Buch

Gebundenes Buch

ab 59,90 €
eBook

eBook

ab 59,90 €

Artikel liefern lassen

Beschreibung

Details

Einband

Gebundene Ausgabe

Erscheinungsdatum

01.02.2024

Verlag

Rheinwerk

Seitenzahl

1386

Maße (L/B/H)

24,6/20,4/6,5 cm

Beschreibung

Details

Einband

Gebundene Ausgabe

Erscheinungsdatum

01.02.2024

Verlag

Rheinwerk

Seitenzahl

1386

Maße (L/B/H)

24,6/20,4/6,5 cm

Gewicht

2298 g

Auflage

5. Auflage

Sprache

Deutsch

ISBN

978-3-8362-9748-6

Weitere Bände von Rheinwerk Computing

Unsere Kundinnen und Kunden meinen

0.0

0 Bewertungen

Informationen zu Bewertungen

Zur Abgabe einer Bewertung ist eine Anmeldung im Konto notwendig. Die Authentizität der Bewertungen wird von uns nicht überprüft. Wir behalten uns vor, Bewertungstexte, die unseren Richtlinien widersprechen, entsprechend zu kürzen oder zu löschen.

Verfassen Sie die erste Bewertung zu diesem Artikel

Helfen Sie anderen Kund*innen durch Ihre Meinung

Erste Bewertung verfassen

Unsere Kundinnen und Kunden meinen

0.0

0 Bewertungen filtern

Weitere Artikel finden Sie in

Die Leseprobe wird geladen.
  • Systemnahe Programmierung mit C und Linux


  •   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