Verkauf durch Sack Fachmedien

Wolf

Wolf, J: Linux-Unix-Programmierung

Medium: Buch
ISBN: 978-3-8362-3772-7
Verlag: Rheinwerk Verlag GmbH
Erscheinungstermin: 28.07.2016
Lieferfrist: bis zu 10 Tage
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

Produkteigenschaften


  • Artikelnummer: 9783836237727
  • Medium: Buch
  • ISBN: 978-3-8362-3772-7
  • Verlag: Rheinwerk Verlag GmbH
  • Erscheinungstermin: 28.07.2016
  • Sprache(n): Deutsch
  • Auflage: 4. Auflage 2016
  • Produktform: Gebunden
  • Seiten: 1435
  • Format (B x H): 190 x 240 mm
  • Ausgabetyp: Kein, Unbekannt

Autoren/Hrsg.

Autoren

Wolf, Jürgen

Jürgen Wolf ist Softwareentwickler, Digitalfotograf und Autor aus Leidenschaft. C/C++, Perl, Linux und die Bildbearbeitung mit Photoshop Elements und GIMP sind seine Themen. Sein Traum: ein ruhiges Leben im Westen Kanadas. Und Bücher auf der Veranda schreiben. Besuchen Sie seine umfangreiche Website www.pronix.de.

Wolf, Klaus-Jürgen

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