05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

30 2 Programmieren <strong>mit</strong> <strong>Unix</strong>-Prozessen<br />

44 filename , strerror( errno ) );<br />

45 exit( EXIT_FAILURE );<br />

46 }<br />

47<br />

48 return( EXIT_SUCCESS );<br />

49 }<br />

Ein Testlauf zeigt das erwartete Verhalten, die Ausgabe von Beispiel 2.3 ist<br />

identisch zur Ausgabe des cat-Kommandos:<br />

$ ./read-data<br />

0123<br />

4567<br />

89ab<br />

cdef<br />

ghij<br />

klmn<br />

opqr<br />

stuv<br />

wxyz<br />

13<br />

14–30<br />

Wie sieht das Verhalten aber nun aus, wenn wir die Daten anstatt aus einer<br />

Datei von einem Terminal einlesen? Eigentlich sollte sich das Verhalten nicht<br />

großartig ändern, oder etwa doch? Wir modifizieren das vorangehende Beispiel<br />

leicht, um dieser Fragestellung auf den Gr<strong>und</strong> zu gehen.<br />

Anstatt eine vorgegebene Datei zu öffnen, lesen wir in Beispiel 2.4 einfach<br />

von der durch die Shell bereitgestellten Standardeingabe. Die Konstante<br />

STDIN_FILENO ist die sprechende Variante für den Filedeskriptor <strong>mit</strong> Index 0,<br />

also die Standardeingabe.<br />

Daran schließt sich die gleiche Verarbeitung der Daten an, wie sie bereits in<br />

Beispiel 2.3 zu finden <strong>und</strong> dort ausführlich erklärt ist.<br />

1 #include <br />

2 #include <br />

3 #include <br />

4 #include <br />

5 #include <br />

6<br />

Beispiel 2.4. read-data-stdin.c<br />

7 int main( int argc, char *argv[] )<br />

8 {<br />

9 int fd;<br />

10 char data[45];

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!