Produktbild: Systemnahe Programmierung mit C und Linux

Systemnahe Programmierung mit C und Linux Das umfassende Handbuch zur Linux-Anwendungsprogrammierung — Das umfassende Handbuch

Aus der Reihe Rheinwerk Computing

59,90 €

inkl. gesetzl. MwSt., Versandkostenfrei


Beschreibung

Produktdetails

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

Farbe

Weiß / Schwarz

Auflage

5

Sprache

Deutsch

ISBN

978-3-8362-9748-6

Beschreibung

Produktdetails

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

Farbe

Weiß / Schwarz

Auflage

5

Sprache

Deutsch

ISBN

978-3-8362-9748-6

Herstelleradresse

Rheinwerk Verlag GmbH
Rheinwerkallee 4
53227 Bonn
DE

Email: GPSR Kontakt

Noch keine Bewertungen vorhanden

Verfassen Sie die erste Bewertung zu diesem Artikel

Helfen Sie anderen Kundinnen und Kunden durch Ihre Meinung.

Kundinnen und Kunden meinen

Bewertungen (0)

Die Leseprobe wird geladen.
  • Produktbild: 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