Jürgen Herz: Prozesse sollen kommunizieren

Beitrag lesen

Hallo Experten,

heute hatte ich mich mal an etwas schwierigeres gemacht - und scheitere nun prompt. Ich hoffe, daß jemand von euch mir helfen kann - und daß die Textmenge hier nicht abschreckend wirkt.

Ich habe zwei Perl-Scripte, die beide durchlaufen sollen, d.h. keines von beiden kann ständig beendet und wieder gestartet werden.

Script 1 wartet als Dämon auf bestimmte Ereignisse und soll die dann Script 2 melden, das einen Alert per Instant Messaging versenden soll.

Beides für sich läuft schön. Mein Problem ist nun, der Austausch der Meldung.
Ich hatte mich entschieden Script 2 am Anfang von Script 1 aus per
  open INFORMANT, "| ./informat.pl";
zu starten. Dieses sollte meiner Vorstellung nach loopen und wenn es was auf STDIN gibt, den alert senden.
Grob gesagt sieht der Code so aus:

while(1) {
  while (<STDIN>) {
    sendalert($_);
  }

listen_to_IM_server();
}

Tja, nur dummerweise blockt Perl an "while (<STDIN>)" solange Script 1 das Filehandle offen hat. Und von daher stehe ich nun dumm da.

Meine Fragen nun ist zweiteilig:
1. Gibt es irgendeine Möglichkeit, <STDIN> nichtblockend zu bekommen?
2. Gibt es insgesamt eine bessere Lösung für mein Problem als per anonymer Pipe?

Grüße,
Jürgen