* Michael Kastner wrote/schrieb:

> vielen Dank f�r die (sehr schnelle!) Antwort. Es gibt auf der 
> jakarta.apache.org einen Java-Mailserver (James), den ich gerne laufen 
> lassen w�rde.
> 
> W�hrend es f�r z.B. f�r Tomcat eine rpm gibt, das das diesen gleich als 
> Server installiert, gibt es das f�r James nicht. In den FAQs steht auch 
> nichts dr�ber und beim Googeln habe ich auch nichts gefunden.
> 
> Aber was soll ein Mail-Server, der nicht als Daemon l�uft!?

Vor allem was soll ein Mailserver, der in Java programmiert ist? Sowas
w�rde ich nicht mal mit der Kneifzange anfassen.

> Na ja und nat�rlich interessiert es mich prinzipiell, wie ein Daemon 
> unter Linux programmiert wird, aber das w�rde hier zu weit f�hren. 

N�. Das f�hrt nicht zu weit, und ist schnell erkl�rt. Ich kann aber kein C
und wei� nur die Methode unter Perl, die sich nicht zu sehr von anderen
Sprachen unterscheiden sollte.

Unter Perl macht man einen Proze� mit folgenden Aufrufen zum Daemon:

use POSIX qw(fork setsid);
fork() && exit(0);
setsid();

Fork() erstellt eine exakte Kopie des laufenden Prozesses, inclusive der
Umgebung und aller internen Variablen. Der R�ckgabewert von fork() in der
Kopie ist 0, der R�ckgabewert im Parent ist die Kind-PID. Den Parent
beendet man dann (&& exit(), weil der R�ckgabewert im Parent ungleich 0
ist), und das Kind macht eine eigene Proze�gruppe auf. 

Man mu� im Kind noch ein bi�chen hinter sich aufr�umen, Filehandles nach
/dev/null und chdir nach "/", aber das findet sich schon. ;-)

-martin

-- 
If your NT box is dead, it is doing what it does best: nothing.
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an