Thread Signal PIPE wird nicht getrappt (CGI) (18 answers)
Opened by GwenDragon at 2012-10-25 17:20

kristian
 2012-10-26 17:13
#162861 #162861
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich habs gefunden ;-)
Er reagiert nicht, wenn er im sleep ist.

Das:
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 CGI::Fast;

$SIG{PIPE} = sub { 
    open my $fh, '>>', 'debug.txt';
    print $fh "Debug: " . scalar localtime . " died PIPE.\n";
    close $fh;
    CORE::die "Pipe: @_\n"; 
};

while ( my $q = new CGI::Fast ) {
    print $q->header('text/plain');
    print "output #1\n";
    warn "Debug: RUNNING";
    foreach my $nr(1..10000000){
        print "test text $nr\n";
    }
    
    print "output #2\n";
    last if ( -M $ENV{'SCRIPT_FILENAME'} < 0 );

}


END {
    open my $fh, '>>', 'debug.txt';
    print $fh "Debug: END block.\n";
    close $fh;
}

macht zumindest was zu erwarten ist.

CGI:
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
#!/usr/bin/perl
$|++;
use strict;
use warnings;
use CGI;

$SIG{PIPE} = sub {
    open my $fh, '>>', 'debug_cgi.txt';
    print $fh "Debug: " . scalar localtime . " died PIPE.\n";
    close $fh;
    CORE::die "Pipe: @_\n";
};

my $q = new CGI;
print $q->header('text/plain');
print "output #1\n";
warn "Debug: RUNNING";
foreach my $nr ( 1 .. 10000000 ) {
    print "test text $nr\n";
}

print "output #2\n";

END {
    open my $fh, '>>', 'debug_cgi.txt';
    print $fh "Debug: END block.\n";
    close $fh;
}


klappt auch
Last edited: 2012-10-26 17:19:28 +0200 (CEST)

View full thread Signal PIPE wird nicht getrappt (CGI)