Matt LeBlanc: Problem mit Dateihandles und Prozessaufrufen

Hallo,

wie kann man die Ausgabe eines Dateihandles auf ein früher geöffneten Prozess
umleiten. Das sieht ungefähr so aus :::

open(MAIL, " /usr/sbin/sendmail -t")
...
open(ENCODE, " /usr/bin/uuencode STDIN") -> diese Ausgabe soll an den oberen
Aufruf weitergeleitet werden.
Nur wie ???
Das ganze läuft unter Linux.

Danke

  1. Hallo,

    wie kann man die Ausgabe eines Dateihandles auf ein früher geöffneten Prozess
    umleiten. Das sieht ungefähr so aus :::

    open(MAIL, " /usr/sbin/sendmail -t")
    ...
    open(ENCODE, " /usr/bin/uuencode STDIN") -> diese Ausgabe soll an den oberen
    Aufruf weitergeleitet werden.
    Nur wie ???
    Das ganze läuft unter Linux.

    Danke

    Hi,
    meinst Du sowas ? :

    open (MAIL, ">test.pl.log");
    print MAIL "Hallo\n";
    open (BIN, "/usr/bin/uuencode /home/admins/test filename ");
    while (my $line = <BIN>) {
            print MAIL $line;
    }
    close(BIN);
    close(MAIL);

    Bitte

  2. Hi,

    open(MAIL, " /usr/sbin/sendmail -t")
    ...
    open(ENCODE, " /usr/bin/uuencode STDIN") -> diese Ausgabe soll
    an den oberen
    Aufruf weitergeleitet werden.
    Nur wie ???

    open(MAIL, " /usr/sbin/sendmail -t") or die("Konnte sendmail nicht oeffnen: $!");
    open(ENCODE, "/usr/bin/uuencode STDIN ") or die("Konnte uuencode nicht oeffnen: $!");

    Und zwar deshalb, weil du ja die von "uuencode" erzeugte Ausgabe
    haben willst. Dann ist der Rest im Grunde ein Kinderspiel:
    In einer Schleife den Inhalt einfach an MAIL weiterleiten.

    while(<ENCODE>)
    {
    print MAIL "$_";
    }

    close(MAIL);
    close(ENCODE);

    mfg
    CK1

  3. Hallo

    ich glaube ich verstehe was du willst.
    Du versuchst in einer open Anweisung eine Pipe am Anfang und am Ende
    zu öffnen. Das geht mit der normalen open Anweisung aber nicht.
    Dafür mußt du open2 aus der IPC benutzen.

    Viel Glück.