Linux-Unix-Programmierung
![]() ca. 1247 S., geb., mit CD 49,90 Euro 3., aktualisierte und erweiterte Auflage ISBN 978-3-8362-1366-0 |
Das Themenspektrum
des Buchs lässt sich grob in sechs Teilen aufgliedern -
Systemprogrammierung, Netzwerkprogrammierung, Programmierung von
Datenbankschnittstellen, Terminal- und GUI-Programmierung
(Benutzerschnittstellen) und der Umgang mit den Grundlegenden
Werkzeugen eines Programmieres. Neu in der dritten Auflage ist
außerdem ein komplettes Kapitel zur Shellprogrammierung und
eine umfassende Kommandoreferenz. Ich denke, da ist für jeden
Geschmack etwas dabei. Buch-ÜbersichtKapitel 2
beschreibt die grundlegenden E/A-Funktionen (sowohl der niedrigeren als
auch der höheren Ebene) – womit man unbedingt
vertraut sein sollte, bevor man sich auf die anderen Kapitel
einlässt. In Kapitel
3 werden die Attribute von Dateien und Verzeichnissen
behandelt – dabei wird auch auf die Links und deren Sinn
eingegangen. Wie Sie (als normaler Benutzer) auf Systeminformationen
zugreifen können – was eine gerne gestellte Frage
ist –, erfahren Sie in Kapitel 4.
Kapitel 5
behandelt den Zugriff auf die Hardware im System. Wobei hier nicht die
(tiefe) Hardware-/Kernelprogrammierung gemeint ist, sondern wie Sie
über einfache Gerätedateien (auch wieder als
einfacher Benutzer) mit einfachen E/A-Funktionen mit der Hardware
kommunizieren können. Als Beispiel wird gezeigt, wie Sie mit
einem einfachen Konsolenprogramm Audio-CDs abspielen können.
Neu hinzugekommen
in der zweiten Auflage ist das Kapitel
6 welches
Ihnen zeigt, wie man auf die zentralen System- und Benutzerdateien (wie
bspw. /etc/passwd)
zugreift. Der Titel von Kapitel
7 (Dämonen, Zombies und Prozesse) mag ein wenig
komisch erscheinen, aber das sind nun mal die Fachbegriffe
dafür. Speziell bei den Prozessen handelt es sich um ein
außerordentlich wichtiges Thema der Systemprogrammierung im
Allgemeinen – womit man sich als angehender
Linux-/Unix-(System) Programmierer beschäftigen muss. Sie
erfahren dabei so ziemlich alles rund um Prozesse – wie man
diese erzeugt, killt und wie man daraus einen Zombie (im negativen
Sinne gemeint) machen kann. Am Ende erfahren Sie noch, wie Sie einen
(Dämon-)Prozess unabhängig von der Steuerung des
Terminals im Hintergrund ausführen können.
Kapitel 8
behandelt Signale, die ebenfalls unerlässlich sind, um die
Systemprogrammierung zu verstehen. Ausgehend vom Kapitel 7, den
Prozessen, erfahren Sie in Kapitel
9, wie die einzelnen Prozesse via
Interprozesskommunikationen (IPC) miteinander kommunizieren
können. Dabei werden viele grundlegende IPC-Techniken
behandelt. Dass es neben den gewöhnlichen Prozessen noch eine
andere Form von leichtgewichtigen und meistens auch schnelleren
Prozessen gibt, erfahren Sie im Kapitel
10 – der (Linux-)Threadprogrammierung.
Damit Sie Ihre
Software um Netzwerkfunktionalitäten erweitern
können, finden Sie in Kapitel
11 eine Einführung in die Netzwerkprogrammierung.
Kapitel 12
behandelt die Programmierung von Datenbanken – oder besser
die Verwendung von C-APIs, welche die Datenbanken mitliefern. Damit
sind Sie in der Lage eigene Client-Anwendungen zu erstellen. Behandelt
werden im Buch die Schnittstellen zur MySQL- und PostgreSQL-Datenbank.
Für alle, die bisher noch nichts mit Datenbanken am Hut
hatten, gibt es zu jeder DB einen Crashkurs – somit sind
keinerlei Vorkenntnisse hierzu nötig.
Die
nächsten drei Kapitel behandeln die Entwicklung von
Benutzerschnittstellen. Denn was nützt eine Software, die
keiner bedienen kann? Kapitel
13 beschreibt die Entwicklung von Programmen für
die Konsole. Auch wenn es ein wenig altertümlich erscheint:
Konsolenprogramme sind immer noch eines der ersten Projekte, mit denen
ein Programmierer beginnt, und immer noch gerne eingesetzte Programme.
Behandelt werden dabei termios, terminfo und curses. Kapitel 14 zeigt
Ihnen dann, wie einfach es mit GTK+ ist, ein Programm mit einer
grafischen Oberfläche zu versehen. GTK+ hat im Gegensatz zu
den fetten Bibliotheken wie Qt oder der GNOME-Bibliothek den Vorteil,
nicht so speicherintensiv zu sein. Ein weiterer Vorteil von GTK+ ist
es, dass Sie Ihre Anwendung auch jenseits der Linuxwelt portieren
können.
Kapitel 15
liefert Ihnen dann einen Überblick zu weiteren
gängigen GUI-Bibliotheken in der Linux-Unix- und teilweise
auch in der Crossplattform-Entwicklung.
Kapitel 16 ist
unerlässlich für jeden Programmierer, der Software
entwickelt. Der Umgang mit den grundlegenden Werkzeugen
während und nach der Entwicklung ist das A und O jeder ernst
zu nehmenden Software. In diesem Kapitel werden eine Menge
Open-Source-Werkzeuge beschrieben, die Ihnen das Leben erheblich
leichter machen können. Behandelt werden dabei:
Programmerstellung mit GNU-GCC und MAKE – Erstellen von
statischen und
dynamischen Bibliotheken – eigene Pakete mit RPM erstellen – Versionsverwaltung mit RCS und CVS – Programme testen (Zeitmessung mit TIME, GPROF und GCOV) und debuggen (GNUGDB) – Systemaufrufe mit STRACE verfolgen – Memory Leaks und unerlaubte Speicherzugriffe (EFENCE und VALGRIND). Neu in der dritten
Auflage ist das Kapitel
17 mit einer umfangreichen Einführung in die
Shellprogrammierung. Für dieses Kapitel habe ich mich
entschieden, weil mir aufgefallen ist, dass viele Programmierer gerne
das Rad immer wieder neu erfinden. Häufig werden
Lösungen mit aufwändigen Konsolenprogrammen
entwickelt, die in der Shellprogrammierung mit ein paar Zeilen erstellt
werden.
Im Anhang A finden Sie einige
Dinge, die Sie in puncto Sicherheit beachten müssen, und in Anhang B eine kompakte
Funktionsreferenz vieler Funktionen, die im Buch verwendet wurden. Neu
in der dritten Auflage ist Anhang
C mit einer umfangreichen Übersicht (mit
Beispielen) zu den Linux-Unix-Kommandos in der Shell. Anhang D listet
verschiedene Eigenheiten von Shells wie externe Kommandos,
Shell-Optionen, Shell-Variablen usw. auf. Am Ende – im Anhang E
– wird die beiliegende Buch-CD, welche ein umfangreiches
Bonus-Material bietet, beschrieben.
Buch-CD
Zu den weiteren
Highlights gehören interessante Artikel der Zeitschrift
hackin9 und ein Manuskript zum Thema "Sicherheitsrelevante
Programmierfehler" von Thomas Biege (SUSE LINUX AG, Security Support
& Auditing). Natürlich nicht zu vergessen, das Projekt
"SelfLinux", welches eine vollständige Dokumentation zu
GNU/Linux beinhaltet. Eine weitere Perle auf dieser Buch-CD finden Sie
in der IPv6-Übersicht, die in großen Teilen aus der
Diplomarbeit von Herrn Uwe Toenjes entstand und von Mario
Fürderer und Thomas Lange erweitert und überarbeitet
wurde.
|

