Wie kann ich die initialisieren Perl STDIN/STDOUT/STDERR?

Habe ich ein Perl-Skript, welches die Gabeln und die daemonizes selbst. Es ist von cron ausgeführt, um die nicht verlassen ein zombie herum, ich schließe STDIN,STDOUT und STDERR:

open STDIN, '/dev/null'   or die "Can't read /dev/null: $!";
open STDOUT, '>>/dev/null' or die "Can't write to /dev/null: $!";
open STDERR, '>>/dev/null' or die "Can't write to /dev/null: $!";
if (!fork()) {
  do_some_fork_stuff();
  }

Die Frage die ich habe ist: die würde ich gerne wiederherstellen, zumindest STDOUT nach diesem Punkt (es wäre schön, wiederherstellen den anderen 2). Aber was magischen Symbolen muss ich verwenden, um re-öffnen Sie STDOUT als das, was STDOUT verwendet werden?

Ich weiß, dass ich könnte "/dev/tty" wenn ich von einem tty (aber ich bin läuft von cron und je nach stdout an anderer Stelle). Ich habe auch gelesen, tricks, wo Sie STDOUT beiseite mit open SAVEOUT,">&STDOUT"sondern nur der Akt der Herstellung dieses Kopie löst nicht das ursprüngliche problem, dass eine zombie herum.

Ich bin auf der Suche, um zu sehen, ob es etwas Magie wie open STDOUT,"|-" (die ich kenne ist es nicht) zu öffnen, STDOUT, wie Sie sollte geöffnet werden.

InformationsquelleAutor der Frage Josh | 2009-08-28

Schreibe einen Kommentar