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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5.2 Iterative Server 257<br />

1 #include <br />

2 #include <br />

3 #include <br />

4 #include <br />

5 #include <br />

6 #include <br />

7 #include <br />

8 #include <br />

9<br />

10 #include "server.h"<br />

11<br />

12 int daemon_exit = 0;<br />

13<br />

14 void sig_handler( int sig )<br />

15 {<br />

16 daemon_exit = 1;<br />

17 return;<br />

18 }<br />

Beispiel 5.9. iter-srv.c<br />

19<br />

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

21 {<br />

22 int sd, client;<br />

23 socklen_t slen;<br />

24 struct sockaddr_storage sa;<br />

25 struct sigaction action;<br />

26<br />

27 /* horchenden Socket öffnen (passive open) */<br />

28 if( ( sd = tcp_listen( NULL, SRVPORT , BACKLOG ) ) < 0 )<br />

29 exit( EXIT_FAILURE );<br />

30<br />

31 /* Signalbehandlungsroutine für SIGTERM installieren */<br />

32 action.sa_handler = sig_handler;<br />

33 sigemptyset( &action.sa_mask );<br />

34 action.sa_flags = 0;<br />

35<br />

36 if( sigaction( SIGTERM , &action , NULL ) < 0 )<br />

37 {<br />

38 fprintf( stderr , "sigaction() failed: %s",<br />

39 strerror( errno ) );<br />

40 close( sd ); /* passiven Socket schließen */<br />

41 exit( EXIT_FAILURE );<br />

42 }<br />

43<br />

44 /* Prozeß in einen Daemon umwandeln */<br />

45 daemon_init( argv[0], PIDFILE , LOG_DAEMON );<br />

46<br />

47 init_srv_stats(); /* CPU-Statistik initialisieren */

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!