C und Linux - Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen

von: Martin Gräfe

Carl Hanser Fachbuchverlag, 2010

ISBN: 9783446424159 , 338 Seiten

4. Auflage

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 23,99 EUR

Mehr zum Inhalt

C und Linux - Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen


 

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