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.

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

81 /* Schritt 6: Dateimodusmaske zurücksetzen */<br />

82<br />

83 umask( 0 );<br />

84 }<br />

85<br />

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

87 {<br />

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

89<br />

90 sleep( 60 ); /* Kunstpause für ’ps jax’ */<br />

91 }<br />

77–79<br />

81–83<br />

88–90<br />

Als nächstes wechselt der Dæmon-Prozeß sein Arbeitsverzeichnis in das Wurzelverzeichnis<br />

des Systems. Im Prinzip ist hier jedes beliebige Verzeichnis geeignet.<br />

Wichtig ist lediglich, daß der Dæmon-Prozeß nicht das durch den Programmstart<br />

ererbte Arbeitsverzeichnis beibehält. Auf diese Weise bestimmt<br />

nicht die umask der aufrufenden Umgebung das aktuelle Arbeitsverzeichnis<br />

des Dæmons. Im Arbeitsverzeichnis wird z. B. bei einem Programmabsturz<br />

eine core-Datei zur Fehleranalyse erzeugt.<br />

Als letzten Schritt setzt der Dæmon seine Dateimodusmaske für neu erstellte<br />

Dateien zurück. Auf diese Weise bestimmt nicht die umask der aufrufenden<br />

Umgebung die Zugriffsrechte für neu erstellte Dateien <strong>und</strong> Verzeichnisse.<br />

Im Hauptprogramm rufen wir als erstes die Funktion daemon_init() auf.<br />

Die Funktion erhält als Parameter den aktuellen Programmnamen sowie <strong>mit</strong><br />

LOG_DAEMON einen Hinweis, daß syslog die Ausgaben eines Dæmons erhält.<br />

Danach legt der Dæmon-Prozeß eine Kunstpause von 60 Sek<strong>und</strong>en ein, da<strong>mit</strong><br />

wir genügend Zeit haben, während eines Probelaufs die aktuelle Prozeßtabelle<br />

des Systems zu analysieren,<br />

Die (leicht verkürzte) Prozeßtabelle zeigt neben einigen typischen <strong>Unix</strong>-<br />

Dæmons (PIDs 417 bis 655 <strong>und</strong> PID 664 bis 668) die aktuelle Login-Shell<br />

<strong>mit</strong> der Prozeß-ID 663:<br />

PID PPID PGID SID TTY TPGID COMMAND<br />

1 0 0 0 ? -1 init [2]<br />

417 1 417 417 ? -1 /sbin/syslogd<br />

581 1 581 581 ? -1 /usr/sbin/inetd<br />

639 1 639 639 ? -1 /usr/sbin/sshd<br />

652 1 652 652 ? -1 /usr/sbin/atd<br />

655 1 655 655 ? -1 /usr/sbin/cron<br />

663 1 663 663 tty1 687 -ksh<br />

664 1 664 664 tty2 664 /sbin/getty 38400 tty2<br />

665 1 665 665 tty3 665 /sbin/getty 38400 tty3<br />

666 1 666 666 tty4 666 /sbin/getty 38400 tty4<br />

667 1 667 667 tty5 667 /sbin/getty 38400 tty5

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!