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

Leben 3.0

E-Book Leben 3.0
Mensch sein im Zeitalter Künstlicher Intelligenz Format: ePUB

Die Nobelpreis-Schmiede Massachusetts Institute of Technology ist der bedeutendste technologische Think Tank der USA. Dort arbeitet Professor Max Tegmark mit den weltweit führenden Entwicklern k…

Kombination aus Produkt und Dienstleistung

E-Book Kombination aus Produkt und Dienstleistung
Potentiale für Unternehmen aus der Unterhaltungselektronikbranche Format: PDF

Inhaltsangabe:Einleitung: Für Unternehmen des produzierenden Gewerbes wird es immer schwieriger nachhaltige Wettbewerbsvorteile allein über Produkte zu erzielen. Wettbewerbsvorteile ergeben sich aus…

Apps effektiv managen und vermarkten

E-Book Apps effektiv managen und vermarkten
Die eigene App erfolgreich veröffentlichen: Von der Konzeption bis zur Vermarktung Format: PDF

Lernen Sie Ihre App effektiv, strukturiert und begeisternd weltweit zu vermarkten. In diesem praxisorientierten Buch erhalten Sie einen prägnanten Überblick von der Idee und Konzeption einer App,…

Management von IT-Projekten

E-Book Management von IT-Projekten
Von der Planung zur Realisierung Format: PDF

Projektmanagement (PM) wird immer noch zu selten und zu inkonsequent eingesetzt. Viele problematische Projekte sprechen eine eindeutige Sprache. Kenntnisse des PM und seine Anwendungsmöglichkeiten…

Python 3 - Intensivkurs

E-Book Python 3 - Intensivkurs
Projekte erfolgreich realisieren Format: PDF

Python ist eine vollwertige Programmiersprache, mit der sich auch größere Anwendungen entwickeln lassen. In den letzten Jahren hat sie an Beliebtheit gewonnen, und mit Python 3 steht eine stark…

Management von IT-Projekten

E-Book Management von IT-Projekten
Von der Planung zur Realisierung Format: PDF

Projektmanagement (PM) wird immer noch zu selten und zu inkonsequent eingesetzt. Viele problematische Projekte sprechen eine eindeutige Sprache. Kenntnisse des PM und seine Anwendungsmöglichkeiten…

Weitere Zeitschriften

Berufsstart Bewerbung

Berufsstart Bewerbung

»Berufsstart Bewerbung« erscheint jährlich zum Wintersemester im November mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

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 ...

Gastronomie Report

Gastronomie Report

News & Infos für die Gastronomie: Tipps, Trends und Ideen, Produkte aus aller Welt, Innovative Konzepte, Küchentechnik der Zukunft, Service mit Zusatznutzen und vieles mehr. Frech, offensiv, ...

Dr. med. Mabuse

Dr. med. Mabuse

Zeitschrift für alle Gesundheitsberufe Seit über 40 Jahren sorgt die Zeitschrift Dr. med. Mabuse für einen anderen Blick auf die Gesundheits- und Sozialpolitik. Das Konzept einer Zeitschrift ...

DULV info

DULV info

UL-Technik, UL-Flugbetrieb, Luftrecht, Reiseberichte, Verbandsinte. Der Deutsche Ultraleichtflugverband e. V. - oder kurz DULV - wurde 1982 von ein paar Enthusiasten gegründet. Wegen der hohen ...

ERNEUERBARE ENERGIEN

ERNEUERBARE ENERGIEN

ERNEUERBARE ENERGIEN informiert durch unabhängigen Journalismus umfassend über die wichtigsten Geschehnisse im Markt der regenerativen Energien. Mit Leidenschaft sind wir stets auf der Suche nach ...