WinFuture-Forum.de: Perl - Kommunikation zwischen Parent und Daemon - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Perl - Kommunikation zwischen Parent und Daemon suche elegante Variante, ohne Umweg über Datei

#1 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.085
  • Beigetreten: 01. Juli 08
  • Reputation: 271

geschrieben 10. Oktober 2011 - 18:54

Hallo,

ich hab hier ein Problem, bei dem ich einfach nicht weiterkomme. Ich habe einen Server, der sich mittels des folgenden Codes komplett vom Elternprozeß abtrennt, um als Daemon zu laufen:
use POSIX "setsid";

sub daemonize
{
  chdir("/") || die "can't chdir to /: $!";
  open(STDIN, "< /dev/null") || die "can't read /dev/null: $!";
  open(STDOUT, "> /dev/null") || die "can't write to /dev/null: $!";
  defined(my $pid = fork()) || die "can't fork: $!";
  exit if $pid; # non-zero now means I am the parent
  (setsid() != -1) || die "Can't start a new session: $!"
  open(STDERR, ">&STDOUT") || die "can't dup stdout: $!";
}
Quelle: perldoc

Die Abtrennung ist auch das Problem, weil somit keine Kommunikation mehr möglich ist. Es können in der Startphase nämlich noch Fehler auftreten, die den Daemon beenden. Davon kriegt der Elternprozeß aber nichts mit, weil der Daemon in seinem eigenen Kontext läuft.

Wie kriege ich es hin, im Elternprozeß zu überprüfen, ob der Daemon nach 3 Sekunden noch läuft? Ich kenne ja nicht mal die PID des Daemons. setsid() gibt nur die eigene PID zurück. Zur Not könnte ich das über eine Datei machen, aber vielleicht kennt ja jemand eine elegantere Möglichkeit?
0

Anzeige

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0