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.

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

für die Ein- <strong>und</strong> Ausgabe zugeordnet. Gerade weil sie aber ihre Aufgaben still<br />

<strong>und</strong> leise im Hintergr<strong>und</strong> erledigen, benötigen die Programme eine Möglichkeit,<br />

um an ihre Umgebung Mitteilungen über den aktuellen Zustand oder<br />

besondere Vorkommnisse ausliefern zu können.<br />

Ein Lösungsansatz ist es, eine sogenannte Log-Datei anzulegen <strong>und</strong> dann alle<br />

wichtigen Meldungen direkt in diese Datei zu schreiben. Die Administratoren<br />

des Rechnersystems werfen dann im Fall von Problemen einen Blick auf diese<br />

Datei, um Aufschluß über die Fehlerursache zu erhalten. Gerade während der<br />

Entwicklungsphase werden bzw. sollten die Ausgaben des neuen Programms<br />

natürlich nicht zu knapp ausfallen. Sobald sich die Software allerdings als<br />

stabil erweist, sollen in der Log-Datei nur noch die wirklich erwähnenswerten<br />

Ausgaben erscheinen. Beispiel 2.8 zeigt die prinzipielle Struktur eines aus<br />

diesen Anforderungen resultierenden Quelltextes.<br />

1 #include <br />

2 #include <br />

3 #include <br />

Beispiel 2.8. logfile.c<br />

4<br />

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

6 {<br />

7 FILE *log, *passwd;<br />

8<br />

9 if( ( log = fopen( "logfile.log", "a" ) ) == NULL )<br />

10 return( EXIT_FAILURE );<br />

11<br />

12 setvbuf( log, NULL, _IONBF , 0 ); /* keine Pufferung */<br />

13<br />

14 #ifdef DEBUG<br />

15 fprintf( log, "Start von %s <strong>mit</strong> %d Argument(en).\n",<br />

16 argv[0], argc );<br />

17 #endif<br />

18<br />

19 if( ( passwd = fopen( "/etc/shadow", "r" ) ) == NULL )<br />

20 {<br />

21 fprintf( log, "Öffnen der Datei /etc/shadow: %s\n",<br />

22 strerror( errno ) );<br />

23 return( EXIT_FAILURE );<br />

24 }<br />

25<br />

26 /* wichtige Arbeiten */<br />

27<br />

28 return( EXIT_SUCCESS );<br />

29 }

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!