Thread Frage zu sysread (18 answers)
Opened by bianca at 2013-10-01 09:18

bianca
 2013-10-01 19:09
#170883 #170883
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
Habe mal was versucht:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/perl
use strict;
use warnings;
use IPC::Open3 1.12;
use IO::Handle 1.24;

my $prog = join(' ',qw(perl doit.pl));

print "Rufe Programm '$prog' auf \n";
my ($in,$out,$err,$pid,$ausgabe,$puffer);
eval {
    $pid = open3($in,$out,$err,$prog);
    $out->blocking(0);
};
die "Gescheitert: '$@'" if $@;
if (defined $pid) {
    print "PID '$pid', lese...\n";
    #$ausgabe .= $puffer while (sysread $out,$puffer,4096);
    sysread $out,$ausgabe,4096;
    print "Fertig mit lesen\n";
    if (defined $ausgabe) {
        print "\n\nErhalte:\n".('=' x 30)."\n$ausgabe";
        my $code = <STDIN>;
        chomp($code);
        print $in $code."\n";
        sysread $out,$ausgabe,4096;
        print "\n\nErhalte:\n".('=' x 30)."\n$ausgabe";
    }
}
else {
    die "Keine PID";
}

Habe ich das in Zeile 13 richtig gemacht? Es verhält sich nämlich leider genau so wie vorher.
Gewundert hat mich auch, dass es keine Fehlermeldung gab, als ich use IO::Handle 1.24; nicht drin hatte. Ich dachte, das wäre eine Funktion von CPAN:IO::Handle?
10 print "Hallo"
20 goto 10

View full thread Frage zu sysread