C und Linux (eBook)
338 Seiten
Carl Hanser Fachbuchverlag
978-3-446-42415-9 (ISBN)
Wer Erfahrungen in der C-Programmierung hat, kann die vielen Möglichkeiten von Linux kennen lernen und ausschöpfen. Dieses Buch zeigt Ihnen wie und enthält praktische Lösungen für häufig auftauchende Aufgabenstellungen. Als Grundlage wird zunächst der Umgang mit wichtigen Werkzeugen erklärt, die in jeder Linux-Distribution enthalten sind: Editor, Compiler, Debugger, Make usw.
Darauf aufbauend führt der Autor Sie anhand vieler praktischer Beispiele in diese Themen ein:
Zugriff auf Dateien und Verzeichnisse mit C
Programme mit parallel laufenden Prozessen schreiben
USB-Geräte, CD-Laufwerk, Soundkarte und WebCams ansteuern
Programme mit grafischer Benutzeroberfläche erstellen
Direkte Hardware-Zugriffe programmieren
Eigene Hilfe-Seiten erstellen
Die automatische Anpassung auf die eingestellte Landessprache
Wie diese Themen in echten Software-Projekten zusammenspielen, können Sie an zwei umfangreichen Beispielprojekten nachverfolgen.
Die 4. Auflage wurde vollständig überarbeitet. Neu aufgenommen wurden Abschnitte zu den Entwicklungsumgebungen KDevelop und Eclipse, zur Kommunikation mit USB-Geräten, zu Broadcast und Multicast und zu Universal Plug And Play (UPnP).
Erfahren Sie, wie Sie mit eigenen C-Programmen die Möglichkeiten von Linux ausnutzen können.
Nutzen Sie die praktischen Lösungen für häufig auftauchende Aufgabenstellungen.
Viele kleine Beispiele und zwei umfangreiche Beispielprojekte geben Ihnen Anregungen für eigene Programme.
Martin Gräfe promovierte im Bereich Elektrotechnik/Mikroelektronik. Im Rahmen seiner Ingenieurstätigkeit entwickelt er Software für Unix-Workstations und seit 1995 auch für Linux-Systeme.
Inhaltsverzeichnis 6
Vorwort 12
1 Einführung 14
1.1 Warum gerade ”C“? 14
1.2 Bevor es losgeht . . . 15
1.2.1 Paketverwaltung unter SuSE-Linux 15
1.2.2 Paketinstallation bei Ubuntu 17
1.3 DieWerkzeuge 19
1.3.1 Der Editor – die Qual der Wahl 19
1.3.2 Der GNU C-Compiler gcc 21
1.3.3 Ablaufsteuerung mit GNU make 21
1.3.4 Für die Fehlersuche: Die Debugger 23
1.3.5 Integrierte Entwicklungsumgebungen 24
1.4 Der Umgang mit Compiler, Debugger und ”make“ anhand von Beispielen 27
1.4.1 Primzahlen berechnen 27
1.4.2 Fehlersuche mit dem gcc 29
1.4.3 Fehlersuche mit dem GNU Debugger 30
1.4.4 Funktionsbibliotheken verwenden 32
1.4.5 Quelltexte aufteilen 34
1.5 Weiterführende Informationen 38
1.5.1 Die Unix-Online-Hilfen ”man“,”xman“ und ”tkman“ 39
1.5.2 Ein Blick hinter die Kulissen: Die Include-Dateien 41
2 Arbeiten mit einer Entwicklungsumgebung 44
2.1 Anjuta 44
2.1.1 Ein neues Projekt anlegen 44
2.1.2 Eingabe der Quelltexte 46
2.1.3 Kompilieren und Starten des Beispiels 48
2.2 KDevelop 49
2.3 Eclipse + C Development Tooling (CDT) 52
2.3.1 Plug-ins einbinden 53
2.3.2 Ein neues Projekt anlegen 53
3 Kommandozeilenprogramme 56
3.1 Parameter und Rückgabewert der Funktion main() 56
3.1.1 Die Bedeutung des Rückgabewertes von main() 57
3.1.2 Die Variablen argc und argv 57
3.1.3 Auswerten der Kommandozeilenparameter 58
3.1.4 Achtung: Platzhalter! 60
3.2 Konventionen für Kommandozeilenprogramme 61
3.2.1 Ein Muss: Die Hilfe-Option 61
3.2.2 Fehlermeldungen 63
3.2.3 Eigene Manpages erstellen 64
3.3 Programme mehrsprachig auslegen 66
3.4 Ausgabesteuerung im Terminal-Fenster 73
3.4.1 ANSI-Steuersequenzen 73
3.4.2 Die ”ncurses“-Bibliothek 74
4 Dateien und Verzeichnisse 80
4.1 Die Arbeit mit Dateien 80
4.1.1 Gepufferte Ein-/Ausgabe 80
4.1.2 stdin, stdout und stderr 81
4.1.3 Dateien öffnen und schließen 82
4.1.4 Lesen aus und Schreiben in Dateien 83
4.1.5 Ein Beispiel: Zeilen nummerieren 87
4.2 Eigenschaften von Dateien oder Verzeichnissen auswerten 88
4.3 Verzeichnisse einlesen 90
5 Interprozesskommunikation 92
5.1 Prozessverwaltung unter Linux 92
5.2 Neue Prozesse starten 93
5.2.1 Shell-Programme aufrufen mit system() 93
5.2.2 Die Funktionen der exec-Familie 94
5.2.3 Einen Kind-Prozess erzeugen mit fork() 95
5.2.4 Warteschleifen 98
5.3 Signale 99
5.3.1 DieWeckfunktion alarm() 100
5.3.2 Einen Signal-Handler einrichten 101
5.3.3 Auf die Beendigung eines Kind-Prozesses warten 102
5.3.4 Signale setzen mit kill() 103
5.4 Datenaustausch zwischen Prozessen 104
5.4.1 Pipes 104
5.4.2 FIFOs 108
5.4.3 SharedMemory 110
5.5 Alternative Verfahren zur Erzeugung von Prozessen 113
5.5.1 popen() und pclose() 113
5.5.2 Die fork()-Alternative clone() 114
5.5.3 POSIX-Threads 116
6 Devices – das Tor zur Hardware 120
6.1 Das Device-Konzept von Linux 120
6.1.1 Devices öffnen und schließen 121
6.1.2 Ungepuffertes Lesen und Schreiben 122
6.1.3 Devices steuern mit ioctl() 123
6.2 Das CD-ROM-Laufwerk 124
6.2.1 Die CD” auswerfen“ 124
6.2.2 Fähigkeiten des Laufwerks auslesen 125
6.2.3 Audio-CDs abspielen 127
6.3 Ansteuerung einer Soundkarte 134
6.3.1 OSS, ALSA und ESOUND 135
6.3.2 Der Mixer 135
6.3.3 Audiodaten aufnehmen und wiedergeben 139
6.4 ”Video for Linux“ 143
6.4.1 Eigenschaften des Devices 143
6.4.2 Bilder aufzeichnen 146
6.5 Die serielle Schnittstelle 155
6.5.1 Terminal-Parameter einstellen 156
6.5.2 Ein kleines Terminalprogramm 158
6.6 Druckerausgaben 162
6.7 Der Universal Serial Bus (USB) 167
6.7.1 Ansteuerung von USB-Geräten anhand eines Beispiels 169
7 Netzwerkprogrammierung 176
7.1 Einführung 177
7.1.1 Begriffe 177
7.1.2 Vorbereitung 179
7.1.3 Das Client-Server-Prinzip 182
7.1.4 Sockets 183
7.2 Der TCP/IP-Client 184
7.2.1 Aufbau einer Verbindung 184
7.2.2 Ein ”Universal“-Client 186
7.2.3 Rechnernamen in IP-Adressen umwandeln 189
7.3 Server-Programme 191
7.3.1 Die Funktionsweise eines Servers 191
7.3.2 Ein interaktiver TCP/IP-Server 193
7.3.3 Ein kleiner Webserver 197
7.4 Das User Datagram Protocol (UDP) 204
7.4.1 UDP-Nachrichten senden 204
7.4.2 Der UDP-Server 207
7.4.3 Pakete an alle Teilnehmer senden: Broadcast 210
7.4.4 Multicast-Sockets 212
7.4.5 UPnP – Universal Plug And Play 213
7.5 Noch einWort zur Sicherheit 217
8 Grafische Benutzeroberflächen 218
8.1 Die grafische Oberfläche X11 218
8.2 Das Toolkit GTK+ 219
8.2.1 GTK 1.2 versus GTK 2.0 219
8.2.2 GTK-Programme übersetzen 220
8.2.3 Ein erstes Beispiel 221
8.2.4 Das Callback-Prinzip 223
8.2.5 Schaltflächen (Buttons) 226
8.2.6 Hinweistexte (Tipps) 229
8.2.7 Widgets anordnen 229
8.2.8 Text-Labels 233
8.2.9 Dialogfenster 234
8.2.10 Auswahlfelder 237
8.2.11 Eingabefelder für Text und Zahlen 241
8.2.12 Menüs 246
8.2.13 Pixmap-Grafiken darstellen 251
8.2.14 Zeichenflächen 257
8.2.15 Zeichenfläche mit Rollbalken 263
8.2.16 Dateiauswahlfenster 265
8.2.17 Umlaute und Sonderzeichen 268
8.2.18 Wie geht es weiter? 268
8.3 Grafik ohne X11 mit der SVGALIB 269
8.3.1 Besonderheiten beim Arbeiten mit der libvga 269
8.3.2 Ein erstes Beispiel 270
8.3.3 Mit Perspektive: 3D-Funktionen zeichnen 273
8.3.4 Ein kleines Malprogramm 275
8.3.5 Erweiterte Funktionen mit der libvgagl 279
8.3.6 Weitere Informationsquellen 281
9 Hardware-Programmierung 284
9.1 Hardware-nahe Programme schreiben 284
9.1.1 Eigene Programme mit root-Rechten ausstatten 285
9.1.2 Zugriff auf I/O-Ports freischalten 285
9.1.3 Zugriff auf die I/O-Ports 286
9.2 Ansteuerung des Parallelports 287
9.2.1 Beschreibung des Parallelports 287
9.2.2 Die Adresse des Parallelports suchen 288
9.2.3 Ein Beispiel: ”LED-Lauflicht“ 289
9.3 Modem-Steuerleitungen abfragen 292
10 Beispielprojekte 296
10.1 WebCam: Video-Übertragung per HTTP 296
10.1.1 Wie die Bilder laufen lernen 297
10.1.2 Strukturierung der Quelltexte 297
10.1.3 Die HTTP-Authentifizierung 311
10.2 Telefonbuch mit automatischer Anwahl 313
10.2.1 Ziel des Projektes 313
10.2.2 Strukturierung des Projektes 314
10.2.3 Das Hauptprogramm 314
10.2.4 Funktionen zur Ansteuerung des Modems 317
10.2.5 Die Benutzerschnittstelle 320
10.2.6 To Do 325
Anhang 328
A1 – Daten zum Buch im Internet 328
A2 – Das X11-Toolkit XView 328
A3 – Aufbau einer WAV-Audiodatei 329
A4 – Aufbau einer AU-Audiodatei 330
A5 – Linux-Programmierung unterWindows: Cygwin 330
Literaturverzeichnis 332
Stichwortverzeichnis 334
Kapitel 7 Netzwerkprogrammierung (S. 163-164)
Seit den Anfängen von Linux vor mehr als 10 Jahren ist die Netzwerkkommunikation1 fester Bestandteil des Betriebssystems. Während zu dieser Zeit aufWindowsTM 3.11-Rechner diverse proprietäre Netzwerkprotokolle aufgesetzt wurden, war Linux von Haus aus in der Lage, über den Standard TCP/IP mit Workstations, Großrechnern und Servern in Rechenzentren zu kommunizieren. Im Bereich der PCs und Workstations wurden die proprietären Lösungen fast vollständig von TCP/IP verdrängt, sodass inzwischen die unterschiedlichen Betriebssysteme in einem Netzwerk &rdquo, die gleiche Sprache sprechen. Möglicherweise fragen Sie sich an dieser Stelle, ob Sie sichmit der komplexen ThematikNetzwerkprogrammierung auseinandersetzen sollen, weil Sie vielleicht gar nicht beabsichtigen,mehrere Computermit eigenen Programmen zu &rdquo, vernetzen".
Bei Linux ist jedoch die Netzwerkkommunikation mehr als ein Hilfmittel zum Datenaustausch zwischen zwei Computern, sie ist die logische Fortsetzung der Interprozesskommunikation, und viele Teile des Systems bauen darauf auf.Wenn Sie auf dem Desktop Ihres Linux-PCs ein Fenster schließen oder eine Schaltfläche anklicken, wird dies dem betreffenden Programm von der grafischen Oberfläche X11 über Funktionen zurNetzwerkkommunikationmitgeteilt.
Aus diesemGrund ist es sinnvoll, dieses Thema selbst bei &rdquo, Stand-Alone-Systemen" ohne einen Netzwerkanschluss zu betrachten. Die Thematik der Netzwerkprogrammierung ist deutlich umfangreicher als beispielsweise die Interprozesskommunikation. Eine vollständige und detaillierte Beschreibung umfasst leicht mehrere hundert Seiten. Deshalb konzentriert sich dieses Kapitel auf die geläufigsten Funktionen und Methoden, die Sie immerhin in die Lage versetzen werden, einen eigenenWebserver zu programmieren!
7.1 Einführung
ähnlich wie bei den vorangegangenen Kapiteln soll auch hier der Einstieg in die Thematik anhand kleiner Beispielprogramme erleichtert werden. Um die einzelnen Schritte in den Programmen nachvollziehen zu können, sind jedoch ein gewisses Grundlagenwissen und etwas Theorie unerlässlich. Insbesondere sollen die im Umfeld der Netzwerkkommunikation auftauchenden Begriffe sowie das Prinzip der Kommunikation über eine Netzwerkverbindung erläutert werden.
7.1.1 Begriffe Ethernet
Der Begriff &rdquo, Ethernet" wird häufig als Synonym für eine Netzwerkverbindung verwendet. Tatsächlich beschreibt Ethernet ein Verfahren, wie mehrere Teilnehmer auf eine gemeinsame Netzwerkleitung zugreifen können - es handelt sich dabei also um ein Zugriffsverfahren. Urspr ünglich bestand diese Netzwerkleitung aus einem Koaxialkabel ( ähnlich einem Antennenkabel), an das alle Computer eines Netzwerksegments über je ein T-St ück angeschlossen waren. Damit waren Datenraten bis 10MBit/s möglich. Heute findetman eine solche Verkabelung nur noch selten. Das Koaxialkabelwurde weitestgehend von der bekannten 8-adrigen &rdquo, CAT 5"-Leitung verdrängt, und die Netzwerkstruktur ist heutzutage in der Regel sternf örmig, mit Hubs und Switches in den Sternpunkten."
| Erscheint lt. Verlag | 1.1.2010 |
|---|---|
| Verlagsort | München |
| Sprache | deutsch |
| Themenwelt | Informatik ► Betriebssysteme / Server ► Unix / Linux |
| Informatik ► Programmiersprachen / -werkzeuge ► C / C++ | |
| Schlagworte | Betriebssysteme • C • Linux • Programmierung |
| ISBN-10 | 3-446-42415-6 / 3446424156 |
| ISBN-13 | 978-3-446-42415-9 / 9783446424159 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich