WG: [Vienna-pm] "combined" filehandles

Baier Oliver Oliver.Baier at lotterien.at
Fri Feb 4 03:18:49 PST 2005


Ergaenzung:

In der angefuehrten alten Version muss man jeden child-filehandle
$child_handle{$parameter} extra auslesen, was eben recht unpraktikabel ist...

lg
Oliver


-----Ursprüngliche Nachricht-----
Von: Baier Oliver 
Gesendet: Freitag, 04. Februar 2005 12:14
An: 'Bernd Petrovitsch'
Cc: vienna-pm (E-Mail)
Betreff: AW: [Vienna-pm] "combined" filehandles


> -----Ursprüngliche Nachricht-----
> Von: vienna-pm-bounces at pm.org [mailto:vienna-pm-bounces at pm.org]Im
> Auftrag von Bernd Petrovitsch
> Gesendet: Freitag, 04. Februar 2005 11:59
> 
> Wie kommunizieren die Child-Prozesse bei den 1-Child-Bsp.?
> Mit einer unnamed pipe?

ja, wie beschrieben im Perl Cookbook Beispiel 16.4 oder 16.6

> Aus dem Kopf und Bauch müßte das mit mehreren Children auch
> funktionieren (über eine Pipe).

das leider nicht (zumindest bei mir)
ich will ja im parent nur von einem filehandle lesen, also muesste
ich vor jedem fork eine pipe mit dem selben parent-Ende erstellen.
leider wird ein filehandle bei der erneuten definition mit dem selben
Namen ueberschrieben.

> MaW wie schaut der Code aus?


der fork-Abschnitt sieht so aus:

...
...
foreach my $parameter (@parameters) {
    $child_handle{$parameter} = "FROM_" . $parameter;
    pipe $child_handle{$parameter}, TO_PARENT;
    TO_PARENT->autoflush(1);
    FORK: if (my $childpid = fork) {
        close TO_PARENT;
        ...
        ...
    } elsif (defined $childpid) {
        close $child_handle{$parameter};
        print TO_PARENT "from $parameter...\n";
        ...
        ...
    } elsif ($! =~ /No more process/) {
        ### easy fork-error
        sleep 5;
        redo FORK;
    } else {
        warn "fork-Error at $parameter ($!)\n";
    }
}
...
...

lg
Oliver
=====================================================

Die übermittelten Informationen sind nur für die Organisation/Person bestimmt, an die sie adressiert sind und können persönliches, vertrauliches oder rechtlich geschütztes Material enthalten. Andere Personen als der beabsichtigte Empfänger dieser E-Mail sind nicht dazu befugt, diese Informationen abzurufen, weiterzuleiten, zu reproduzieren oder auf sonstige andere Weise zu verwenden. Für den Fall, dass Sie diese Nachricht irrtümlicherweise erhalten haben, wenden Sie sich bitte an den Absender und löschen Sie diese.

HINWEIS:

E-Mail-Verkehr ist nicht sicher und es kann nicht garantiert werden, dass Informationen vollständig, unverfälscht, etc. beim Empfänger ankommen.

=====================================================

The transmitted information is only meant for the addressed organization/person and may contain personal, confidential or legally protected material. Other persons than the intended addressee are not allowed to retrieve, forward, reproduce or use this information in any manner. If you received this message by mistake, please consult the sender and erase it.

NOTICE:

E-Mail-traffic may not be safe and it can not be assured that the received information is complete, accurate, etc.



More information about the Vienna-pm mailing list