* Henrik Schneider schrieb/wrote:

nachfolgender code sollte mir die nachricht "plaplapla" �ber syslog verteilen.. doch es passiert nichts. ich probierte es mit LOG_PERROR um ein direktes feedback zu bekommen. das funktioniert. �ber stderr kommt das "plaplapla" doch im syslog ist nicht davon zu sehen.

Syslog schreibt nicht sofort, sondern wartet, ob die gleiche Zeile vielleicht noch einmal kommt. F�hr nach dem Testscript mal ein "logger foo" aus, um eine andere Zeile zu loggen.

ps: hat wer nen link f�r ein gutes daemon programing howto? daemon designs usw. was macht einen daemon aus, was muss rein, was sollte ich vermeiden. oder vieleicht hat wer ein paar tips?

Das hatten wir hier auf der Liste schon ungef�hr f�nfmal. Einen Daemon macht lediglich aus, da� er forkt (also eine 1:1 Kopie als Kind von sich anlegt) und das Kind sich vom Parent abkoppelt.

Ich kann zwar kein C, habe aber schon massenhaft Daemons in Perl geschrieben (unter anderem eine eigene sasld-Implementation, die kein Mensch will). Ein absoluter Minimal-Daemon k�nnte unter Perl so aussehen:

fork() && exit;
setsid();

Das d�rfte sich von C kaum unterscheiden.

Im Parentproze� gibt fork() die PID des Kinds zur�ck. Daran erkennst Du, in welchem der beiden Prozesse Du grade steckst.

Um es ordentlicher als im o.g. Beispiel zu machen, wechselt man im Kindproze� als erstes das Arbeitsverzeichnis nach / und verbiegt stdout, stdin und stderr nach /dev/null.

Das war dann aber auch wirklich schon fast alles, was man wissen mu�, um einen ersten Daemon schreiben zu k�nnen. Viel Erfolg.

-martin

--
+-------------------------+------------------------+
| Martin Schmitt          | Schmitt Systemberatung |
| http://www.scsy.de/~mas | http://www.scsy.de     |
+-------------------------+------------------------+

Attachment: signature.asc
Description: OpenPGP digital signature



Antwort per Email an