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.

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

1 #include <br />

2 #include <br />

3 #include <br />

4 #include <br />

5 #include <br />

Beispiel 2.7. readn-data-stdin.c<br />

6<br />

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

8 {<br />

9 int fd;<br />

10 char data[45];<br />

11 ssize_t br, bw;<br />

12<br />

13 br = readn( STDIN_FILENO , data, sizeof( data ) );<br />

14 if( br != sizeof( data ) )<br />

15 {<br />

16 if( br < 0 )<br />

17 {<br />

18 printf( "Lesefehler: %s\n", strerror( errno ) );<br />

19 exit( EXIT_FAILURE );<br />

20 }<br />

21 else<br />

22 printf( "Konnte nur %d Bytes lesen.\n", br );<br />

23 }<br />

24<br />

25 bw = writen( STDOUT_FILENO , data, br );<br />

26 if( bw != br )<br />

27 {<br />

28 printf( "Konnte nur %d Bytes schreiben.\n", bw );<br />

29 exit( EXIT_FAILURE );<br />

30 }<br />

31<br />

32 return( EXIT_SUCCESS );<br />

33 }<br />

Jetzt testen wir das jüngste Beispiel <strong>mit</strong> den gleichen Eingaben wie zuvor.<br />

Wie erwartet werden nun wieder alle 45 Zeichen auf einmal eingelesen <strong>und</strong><br />

von der sich anschließenden Funktion writen() auch wieder ausgegeben. Auf<br />

die etwas längliche Darstellung der Ausgabe verzichten wir an dieser Stelle.<br />

Beispiel 2.4 fördert bei genauerer Betrachtung allerdings noch ein zweites<br />

Problem zu Tage, das wir in den bisherigen Beispielen ignoriert haben <strong>und</strong><br />

das uns auf direktem Wege zum nächsten Abschnitt geleitet. Versuchen Sie<br />

einmal, die Ausgabe von Beispiel 2.4 in eine Datei umzulenken <strong>und</strong> geben Sie<br />

danach die Ausgabedatei <strong>mit</strong> dem cat-Kommando aus. Die beiden <strong>mit</strong> cat<br />

ausgegebenen Zeilen entsprechen den beiden letzten Zeilen unseres Tests von<br />

Beispiel 2.4. Allerdings in umgekehrter Reihenfolge! Das ist auf den ersten

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!