Linux-Unix-Programmierung

Das umfassende Handbuch

Jürgen Wolf, Klaus-Jürgen Wolf

Buch (gebundene Ausgabe)
Buch (gebundene Ausgabe)
49,90
49,90
inkl. gesetzl. MwSt.
inkl. gesetzl. MwSt.
Sofort lieferbar Versandkostenfrei
Sofort lieferbar
Versandkostenfrei

Weitere Formate

gebundene Ausgabe

49,90 €

Accordion öffnen
  • Linux-Unix-Programmierung

    Rheinwerk

    Sofort lieferbar

    49,90 €

    Rheinwerk

eBook (ePUB)

44,90 €

Accordion öffnen

Beschreibung

Alles zur Systemprogrammierung

Einstieg, Praxisbeispiele, Referenzen
System-, Netzwerk- und Shell-Programmierung
Datenbanken, GUI-Bibliotheken, Werkzeuge, Sicherheit

Alles zur Systemprogrammierung unter Linux und Unix!
Von E/A-Funktionen, Attributen von Dateien und Verzeichnissen, dem Zugriff auf Systeminformationen über Prozesse und Dämonprozesse, Signale, Interprozesskommunikation und Threads bis hin zu Netzwerkprogrammierung und Devices – als Entwickler mit soliden Kenntnissen von Linux-/Unix-Betriebssystemen und der Sprache C kommen Sie hier voll auf Ihre Kosten.

Aus dem Inhalt:

Laufzeitumgebungen
Dynamische Daten in C
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
Populäre Programmiertechniken unter Linux
Netzwerkprogrammierung
Abgesicherte Netzwerkverbindungen
Datenbanken (MySQL, PostgreSQL, SQLite)
GTK+
Werkzeuge für Programmierer
Shellprogrammierung
Extra-Kapitel zum Download: Terminal E/A und Benutzerschnittstellen für die Konsole

Produktdetails

Einband gebundene Ausgabe
Seitenzahl 1435
Erscheinungsdatum 28.07.2016
Sprache Deutsch
ISBN 978-3-8362-3772-7
Reihe Rheinwerk Computing
Verlag Rheinwerk
Maße (L/B/H) 24,6/20,2/7,3 cm
Gewicht 2424 g
Abbildungen mit Abbildungen
Auflage 4. Auflage

Kundenbewertungen

Es wurden noch keine Bewertungen geschrieben.

  • Artikelbild-0


  •   1.  Einführung ... 25

           1.1 ... Anforderung an den Leser ... 25

           1.2 ... Das Betriebssystem ... 26

           1.3 ... Schreibkonventionen ... 26

           1.4 ... Notationsstil ... 27

           1.5 ... Weitere Hilfen ... 28

      2.  Laufzeitumgebungen ... 29

           2.1 ... Historisches ... 29

           2.2 ... Distributionen und ihre Unterschiede ... 33

           2.3 ... Die GNU-Toolchain ... 34

           2.4 ... Paketmanagement ... 36

           2.5 ... Der Compiler GCC -- eine kurze Einführung ... 37

           2.6 ... POSIX, X/OPEN und ANSI C ... 42

      3.  Dynamische Daten in C ... 47

           3.1 ... Speicher anfordern ... 47

           3.2 ... Speicher verschieben und löschen ... 49

           3.3 ... Zeichenketten und -funktionen ... 49

           3.4 ... Zeichenkodierung ... 51

           3.5 ... Müllsammler, Kanarienvögel und Sicherheit ... 54

      4.  E/A-Funktionen ... 57

           4.1 ... Elementare E/A-Funktionen ... 57

           4.2 ... Filedeskriptor ... 58

           4.3 ... Funktionen, die den Filedeskriptor verwenden ... 61

           4.4 ... Standard-E/A-Funktionen ... 106

           4.5 ... Mit Verzeichnissen arbeiten ... 118

           4.6 ... Fehlerbehandlung ... 140

           4.7 ... Temporäre Dateien und Verzeichnisse ... 143

           4.8 ... Ausblick ... 143

      5.  Attribute von Dateien und Verzeichnissen ... 145

           5.1 ... Struktur stat ... 145

           5.2 ... Erweiterte Attribute ... 161

      6.  Zugriff auf Systeminformationen ... 169

           6.1 ... Das /sys-Dateisystem (sysfs) ... 169

           6.2 ... Das /proc-Dateisystem (procfs) ... 171

           6.3 ... Informationen aus dem /proc-Verzeichnis herausziehen ... 171

           6.4 ... Hardware- bzw. Systeminformationen ermitteln ... 173

           6.5 ... Prozessinformationen ... 179

           6.6 ... Kernel-Informationen ... 184

           6.7 ... Filesysteme ... 191

           6.8 ... Weiterführendes ... 192

      7.  Devices -- eine einfache Verbindung zur Hardware ... 193

           7.1 ... Die Gerätedateitypen ... 193

           7.2 ... Die Gerätedateinummern ... 194

           7.3 ... Historisches ... 195

           7.4 ... Zugriff auf die Gerätedateien ... 196

           7.5 ... Gerätenamen ... 197

           7.6 ... Spezielle Gerätedateien ... 200

           7.7 ... Gerätedateien in der Praxis einsetzen ... 201

      8.  System- und Benutzerdateien ... 219

           8.1 ... Die Datei /etc/passwd ... 219

           8.2 ... Die Datei /etc/shadow ... 225

           8.3 ... Die Datei /etc/group ... 231

           8.4 ... uname -- Informationen zum lokalen System erfragen ... 235

           8.5 ... Das Verzeichnis /etc/skel und der Network Information Service (NIS) ... 237

           8.6 ... Dateien für Netzwerkinformationen ... 238

           8.7 ... Folgen für Entwickler ... 238

      9.  Dämonen, Zombies und Prozesse ... 241

           9.1 ... Was ist ein Prozess? ... 241

           9.2 ... Prozesskomponente ... 242

           9.3 ... Prozesse überwachen -- ps, top, kpm ... 252

           9.4 ... Lebenszyklus eines Prozesses ... 255

           9.5 ... Umgebungsvariablen eines Prozesses ... 257

           9.6 ... Ressourcenlimits eines Prozesses ... 265

           9.7 ... Prozesserkennung ... 269

           9.8 ... Erzeugung von Prozessen -- fork() ... 271

           9.9 ... Warten auf einen Prozess ... 282

           9.10 ... Die exec-Familie ... 289

           9.11 ... Kommandoaufrufe aus dem Programm -- system() ... 295

           9.12 ... Dämonen bzw. Hintergrundprozesse ... 296

           9.13 ... Rund um die Ausführung von Prozessen ... 307

           9.14 ... Zusammenfassung und Ausblick ... 324

    10.  Signale ... 325

           10.1 ... Grundlagen zu den Signalen ... 325

           10.2 ... Das neue Signalkonzept ... 331

           10.3 ... Signalmenge initialisieren ... 332

           10.4 ... Signalmenge hinzufügen oder löschen ... 333

           10.5 ... Signale einrichten oder erfragen ... 333

           10.6 ... Signal an den eigenen Prozess senden -- raise() ... 340

           10.7 ... Signale an andere Prozesse senden -- kill() ... 340

           10.8 ... Zeitschaltuhr einrichten -- alarm() ... 341

           10.9 ... Prozesse stoppen, bis ein Signal eintritt -- pause() ... 342

           10.10 ... Prozesse für eine bestimmte Zeit stoppen -- sleep() und usleep() ... 342

           10.11 ... Signalmaske erfragen oder ändern -- sigprocmask() ... 343

           10.12 ... Prozess während einer Änderung der Signalmaske stoppen -- sigsuspend() ... 344

           10.13 ... Prozesse synchronisieren ... 344

    11.  IPC -- Interprozesskommunikation ... 349

           11.1 ... Unterschiedliche Techniken zur Interprozesskommunikation (IPC) im Überblick ... 350

           11.2 ... Neuere Techniken ... 357

           11.3 ... Gründe für IPC ... 358

           11.4 ... Pipes ... 359

           11.5 ... System-V-Interprozesskommunikation ... 400

           11.6 ... Semaphore ... 402

           11.7 ... Message Queues ... 411

           11.8 ... Shared Memory ... 424

           11.9 ... Das Dateisystem überwachen ... 435

    12.  Threads ... 439

           12.1 ... Unterschiede zwischen Threads und Prozessen ... 439

           12.2 ... Scheduling und Zustände von Threads ... 440

           12.3 ... Die grundlegenden Funktionen zur Thread-Programmierung ... 442

           12.4 ... Die Attribute von Threads und das Scheduling ... 453

           12.5 ... Threads synchronisieren ... 459

           12.6 ... Threads abbrechen (canceln) ... 487

           12.7 ... Erzeugen von Thread-spezifischen Daten (TSD-Data) ... 492

           12.8 ... pthread_once -- Codeabschnitt einmal ausführen ... 495

           12.9 ... Thread-safe (thread-sichere Funktionen) ... 498

           12.10 ... Threads und Signale ... 499

           12.11 ... Zusammenfassung und Ausblick ... 504

    13.  Populäre Programmiertechniken unter Linux ... 505

           13.1 ... Reguläre Ausdrücke ... 505

           13.2 ... getopt: Kommandozeilenoptionen auswerten ... 513

           13.3 ... Capabilities: Wenn root zu mächtig wäre ... 517

           13.4 ... Lokalisierung mit gettext ... 522

           13.5 ... mmap(): Dateien als Speicherbereich ... 526

           13.6 ... Codedokumentation automatisch erzeugen lassen mit Doxygen ... 530

    14.  Netzwerkprogrammierung ... 533

           14.1 ... Einführung ... 533

           14.2 ... Aufbau von Netzwerken ... 534

           14.3 ... TCP/IP -- Aufbau und Struktur ... 539

           14.4 ... TCP-Sockets ... 543

           14.5 ... Das Kommunikationsmodell für Sockets ... 544

           14.6 ... Grundlegende Funktionen zum Zugriff auf die Socket-Schnittstelle ... 545

           14.7 ... Aufbau eines Clientprogramms ... 553

           14.8 ... Aufbau des Serverprogramms ... 558

           14.9 ... IP-Adressen konvertieren, manipulieren und extrahieren ... 563

           14.10 ... Namen und IP-Adressen umwandeln ... 570

           14.11 ... Der Puffer ... 580

           14.12 ... Standard-E/A-Funktionen verwenden ... 581

           14.13 ... Parallele Server ... 582

           14.14 ... Synchrones Multiplexing -- select() ... 598

           14.15 ... POSIX-Threads und Netzwerkprogrammierung ... 620

           14.16 ... Optionen für Sockets setzen bzw. erfragen ... 625

           14.17 ... UDP ... 630

           14.18 ... Unix-Domain-Sockets (IPC) ... 639

           14.19 ... Multicast-Socket ... 645

           14.20 ... Nichtblockierende I/O-Sockets ... 653

           14.21 ... Etwas zu Streams, Raw Socket und TLI und XTI ... 656

           14.22 ... Netzwerksoftware nach IPv6 portieren ... 659

           14.23 ... Sicherheit ... 660

    15.  Abgesicherte Netzwerkverbindungen ... 663

           15.1 ... Grundlagen ... 663

           15.2 ... Server ... 666

           15.3 ... Client ... 671

           15.4 ... Referenz OpenSSL ... 675

    16.  Relationale Datenbanken: MySQL, PostgreSQL und SQLite ... 687

           16.1 ... Relationales Datenbankdesign ... 688

           16.2 ... Datenhaufen und indizierte Listen ... 690

           16.3 ... SQL-Systeme im Überblick ... 691

           16.4 ... Vorbereitungen ... 695

           16.5 ... Beispiele in SQL ... 701

           16.6 ... MySQL-C-Programmierschnittstelle ... 714

           16.7 ... Beispiel eines Newssystems mit MySQL ... 757

           16.8 ... Neue SQL-Funktionen für die Shell -- MySQL erweitern ... 787

           16.9 ... MySQL-Funktionen mit der UDF-Schnittstelle entwerfen ... 788

           16.10 ... PostgreSQL -- Konfiguration ... 798

    17.  GTK+ ... 839

           17.1 ... Was ist GTK+? ... 839

           17.2 ... GTK+-Anwendungen übersetzen ... 843

           17.3 ... Eine Einführung in die Glib-Bibliothek ... 843

           17.4 ... Grundlagen der GTK+-Programmierung ... 867

           17.5 ... Fenster -- GtkWindow ... 878

           17.6 ... Anzeige-Elemente ... 886

           17.7 ... Behälter ... 894

           17.8 ... Buttons und Toggled-Buttons ... 908

           17.9 ... Dateneingabe ... 917

           17.10 ... Menü und Toolbar ... 929

           17.11 ... Mehrzeiliger Text ... 948

           17.12 ... Auswählen (Selection) ... 962

           17.13 ... Events ... 973

           17.14 ... Weitere Widget- und GTK+-Elemente im Überblick ... 979

    18.  Werkzeuge für Programmierer ... 983

           18.1 ... Der Compiler GCC ... 984

           18.2 ... Make ... 994

           18.3 ... Das Makefile portabel machen ... 1011

           18.4 ... Bibliotheken erstellen ... 1019

           18.5 ... RPM ... 1029

           18.6 ... Versionskontrollsysteme ... 1040

           18.7 ... Zeitmessung an Programmen ... 1042

           18.8 ... Debuggen mit GDB und DDD ... 1050

           18.9 ... STRACE -- Systemaufrufe verfolgen ... 1062

           18.10 ... Memory Leaks und unerlaubte Speicherzugriffe ... 1064

           18.11 ... Ausblick ... 1072

    19.  Shell-Programmierung ... 1075

           19.1 ... Was ist eine Shell und was kann sie? ... 1075

           19.2 ... Was sind Shellskripte und wann ist ihr Einsatz sinnvoll? ... 1076

           19.3 ... Wann brauche ich keine Shellskripte? ... 1077

           19.4 ... Welche Schwierigkeiten sind typisch für Shellskripte? ... 1078

           19.5 ... Verschiedene Shelltypen ... 1079

           19.6 ... Shellskripts ausführen ... 1081

           19.7 ... Vom Shellskript zum Prozess ... 1092

           19.8 ... Einen Datenstrom (Stream) umleiten ... 1093

           19.9 ... Ersatzmuster (Namen-Expansion) zur Suche verwenden ... 1101

           19.10 ... Variablen ... 1105

           19.11 ... Quotings ... 1130

           19.12 ... Kommandozeilenargumente ... 1133

           19.13 ... Kontrollstrukturen ... 1140

           19.14 ... Terminal-Eingabe und -Ausgabe ... 1166

           19.15 ... Funktionen ... 1192

           19.16 ... Signale ... 1197

           19.17 ... Prozess- und Skriptausführung ... 1201

           19.18 ... Ein Shellskript bei der Ausführung ... 1209

      A.  Sicherheit unter Linux ... 1213

      B.  Funktionsreferenz ... 1239

      C.  Linux-Unix-Kommandoreferenz ... 1321

      Index ... 1405