Sie sind hier
E-Book

C und Linux

Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen

AutorMartin Gräfe
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2010
Seitenanzahl338 Seiten
ISBN9783446424159
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis23,99 EUR

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.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe
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."
Inhaltsverzeichnis
Inhaltsverzeichnis6
Vorwort12
1 Einführung14
1.1 Warum gerade ”C“?14
1.2 Bevor es losgeht . . .15
1.2.1 Paketverwaltung unter SuSE-Linux15
1.2.2 Paketinstallation bei Ubuntu17
1.3 DieWerkzeuge19
1.3.1 Der Editor – die Qual der Wahl19
1.3.2 Der GNU C-Compiler gcc21
1.3.3 Ablaufsteuerung mit GNU make21
1.3.4 Für die Fehlersuche: Die Debugger23
1.3.5 Integrierte Entwicklungsumgebungen24
1.4 Der Umgang mit Compiler, Debugger und ”make“ anhand von Beispielen27
1.4.1 Primzahlen berechnen27
1.4.2 Fehlersuche mit dem gcc29
1.4.3 Fehlersuche mit dem GNU Debugger30
1.4.4 Funktionsbibliotheken verwenden32
1.4.5 Quelltexte aufteilen34
1.5 Weiterführende Informationen38
1.5.1 Die Unix-Online-Hilfen ”man“,”xman“ und ”tkman“39
1.5.2 Ein Blick hinter die Kulissen: Die Include-Dateien41
2 Arbeiten mit einer Entwicklungsumgebung44
2.1 Anjuta44
2.1.1 Ein neues Projekt anlegen44
2.1.2 Eingabe der Quelltexte46
2.1.3 Kompilieren und Starten des Beispiels48
2.2 KDevelop49
2.3 Eclipse + C Development Tooling (CDT)52
2.3.1 Plug-ins einbinden53
2.3.2 Ein neues Projekt anlegen53
3 Kommandozeilenprogramme56
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 argv57
3.1.3 Auswerten der Kommandozeilenparameter58
3.1.4 Achtung: Platzhalter!60
3.2 Konventionen für Kommandozeilenprogramme61
3.2.1 Ein Muss: Die Hilfe-Option61
3.2.2 Fehlermeldungen63
3.2.3 Eigene Manpages erstellen64
3.3 Programme mehrsprachig auslegen66
3.4 Ausgabesteuerung im Terminal-Fenster73
3.4.1 ANSI-Steuersequenzen73
3.4.2 Die ”ncurses“-Bibliothek74
4 Dateien und Verzeichnisse80
4.1 Die Arbeit mit Dateien80
4.1.1 Gepufferte Ein-/Ausgabe80
4.1.2 stdin, stdout und stderr81
4.1.3 Dateien öffnen und schließen82
4.1.4 Lesen aus und Schreiben in Dateien83
4.1.5 Ein Beispiel: Zeilen nummerieren87
4.2 Eigenschaften von Dateien oder Verzeichnissen auswerten88
4.3 Verzeichnisse einlesen90
5 Interprozesskommunikation92
5.1 Prozessverwaltung unter Linux92
5.2 Neue Prozesse starten93
5.2.1 Shell-Programme aufrufen mit system()93
5.2.2 Die Funktionen der exec-Familie94
5.2.3 Einen Kind-Prozess erzeugen mit fork()95
5.2.4 Warteschleifen98
5.3 Signale99
5.3.1 DieWeckfunktion alarm()100
5.3.2 Einen Signal-Handler einrichten101
5.3.3 Auf die Beendigung eines Kind-Prozesses warten102
5.3.4 Signale setzen mit kill()103
5.4 Datenaustausch zwischen Prozessen104
5.4.1 Pipes104
5.4.2 FIFOs108
5.4.3 SharedMemory110
5.5 Alternative Verfahren zur Erzeugung von Prozessen113
5.5.1 popen() und pclose()113
5.5.2 Die fork()-Alternative clone()114
5.5.3 POSIX-Threads116
6 Devices – das Tor zur Hardware120
6.1 Das Device-Konzept von Linux120
6.1.1 Devices öffnen und schließen121
6.1.2 Ungepuffertes Lesen und Schreiben122
6.1.3 Devices steuern mit ioctl()123
6.2 Das CD-ROM-Laufwerk124
6.2.1 Die CD” auswerfen“124
6.2.2 Fähigkeiten des Laufwerks auslesen125
6.2.3 Audio-CDs abspielen127
6.3 Ansteuerung einer Soundkarte134
6.3.1 OSS, ALSA und ESOUND135
6.3.2 Der Mixer135
6.3.3 Audiodaten aufnehmen und wiedergeben139
6.4 ”Video for Linux“143
6.4.1 Eigenschaften des Devices143
6.4.2 Bilder aufzeichnen146
6.5 Die serielle Schnittstelle155
6.5.1 Terminal-Parameter einstellen156
6.5.2 Ein kleines Terminalprogramm158
6.6 Druckerausgaben162
6.7 Der Universal Serial Bus (USB)167
6.7.1 Ansteuerung von USB-Geräten anhand eines Beispiels169
7 Netzwerkprogrammierung176
7.1 Einführung177
7.1.1 Begriffe177
7.1.2 Vorbereitung179
7.1.3 Das Client-Server-Prinzip182
7.1.4 Sockets183
7.2 Der TCP/IP-Client184
7.2.1 Aufbau einer Verbindung184
7.2.2 Ein ”Universal“-Client186
7.2.3 Rechnernamen in IP-Adressen umwandeln189
7.3 Server-Programme191
7.3.1 Die Funktionsweise eines Servers191
7.3.2 Ein interaktiver TCP/IP-Server193
7.3.3 Ein kleiner Webserver197
7.4 Das User Datagram Protocol (UDP)204
7.4.1 UDP-Nachrichten senden204
7.4.2 Der UDP-Server207
7.4.3 Pakete an alle Teilnehmer senden: Broadcast210
7.4.4 Multicast-Sockets212
7.4.5 UPnP – Universal Plug And Play213
7.5 Noch einWort zur Sicherheit217
8 Grafische Benutzeroberflächen218
8.1 Die grafische Oberfläche X11218
8.2 Das Toolkit GTK+219
8.2.1 GTK 1.2 versus GTK 2.0219
8.2.2 GTK-Programme übersetzen220
8.2.3 Ein erstes Beispiel221
8.2.4 Das Callback-Prinzip223
8.2.5 Schaltflächen (Buttons)226
8.2.6 Hinweistexte (Tipps)229
8.2.7 Widgets anordnen229
8.2.8 Text-Labels233
8.2.9 Dialogfenster234
8.2.10 Auswahlfelder237
8.2.11 Eingabefelder für Text und Zahlen241
8.2.12 Menüs246
8.2.13 Pixmap-Grafiken darstellen251
8.2.14 Zeichenflächen257
8.2.15 Zeichenfläche mit Rollbalken263
8.2.16 Dateiauswahlfenster265
8.2.17 Umlaute und Sonderzeichen268
8.2.18 Wie geht es weiter?268
8.3 Grafik ohne X11 mit der SVGALIB269
8.3.1 Besonderheiten beim Arbeiten mit der libvga269
8.3.2 Ein erstes Beispiel270
8.3.3 Mit Perspektive: 3D-Funktionen zeichnen273
8.3.4 Ein kleines Malprogramm275
8.3.5 Erweiterte Funktionen mit der libvgagl279
8.3.6 Weitere Informationsquellen281
9 Hardware-Programmierung284
9.1 Hardware-nahe Programme schreiben284
9.1.1 Eigene Programme mit root-Rechten ausstatten285
9.1.2 Zugriff auf I/O-Ports freischalten285
9.1.3 Zugriff auf die I/O-Ports286
9.2 Ansteuerung des Parallelports287
9.2.1 Beschreibung des Parallelports287
9.2.2 Die Adresse des Parallelports suchen288
9.2.3 Ein Beispiel: ”LED-Lauflicht“289
9.3 Modem-Steuerleitungen abfragen292
10 Beispielprojekte296
10.1 WebCam: Video-Übertragung per HTTP296
10.1.1 Wie die Bilder laufen lernen297
10.1.2 Strukturierung der Quelltexte297
10.1.3 Die HTTP-Authentifizierung311
10.2 Telefonbuch mit automatischer Anwahl313
10.2.1 Ziel des Projektes313
10.2.2 Strukturierung des Projektes314
10.2.3 Das Hauptprogramm314
10.2.4 Funktionen zur Ansteuerung des Modems317
10.2.5 Die Benutzerschnittstelle320
10.2.6 To Do325
Anhang328
A1 – Daten zum Buch im Internet328
A2 – Das X11-Toolkit XView328
A3 – Aufbau einer WAV-Audiodatei329
A4 – Aufbau einer AU-Audiodatei330
A5 – Linux-Programmierung unterWindows: Cygwin330
Literaturverzeichnis332
Stichwortverzeichnis334

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

caritas

caritas

mitteilungen für die Erzdiözese FreiburgUm Kindern aus armen Familien gute Perspektiven für eine eigenständige Lebensführung zu ermöglichen, muss die Kinderarmut in Deutschland nachhaltig ...

CE-Markt

CE-Markt

CE-Markt ist Pflichtlektüre in der Unterhaltungselektronik-Branche. Die Vermarktung von Home und Mobile Electronics mit den besten Verkaufsargumenten und Verkaufsstrategien gehören ebenso zum ...

Computerwoche

Computerwoche

Die COMPUTERWOCHE berichtet schnell und detailliert über alle Belange der Informations- und Kommunikationstechnik in Unternehmen – über Trends, neue Technologien, Produkte und Märkte. IT-Manager ...

küche + raum

küche + raum

Internationale Fachzeitschrift für Küchenforschung und Küchenplanung. Mit Fachinformationen für Küchenfachhändler, -spezialisten und -planer in Küchenstudios, Möbelfachgeschäften und den ...

Der Steuerzahler

Der Steuerzahler

Der Steuerzahler ist das monatliche Wirtschafts- und Mitgliedermagazin des Bundes der Steuerzahler und erreicht mit fast 230.000 Abonnenten einen weitesten Leserkreis von 1 ...