File: errnosig.t

package info (click to toggle)
perl 5.20.2-3%2Bdeb8u11
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 102,964 kB
  • sloc: perl: 555,553; ansic: 214,041; sh: 38,121; pascal: 8,783; cpp: 3,895; makefile: 2,393; xml: 2,325; yacc: 1,741
file content (30 lines) | stat: -rw-r--r-- 746 bytes parent folder | download | duplicates (3)
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
#!./perl

BEGIN {
    chdir 't' if -d 't';
    @INC = qw(. ../lib);
}

require Config; import Config;
require "test.pl";
plan(tests => 1);

SKIP: {
    skip("Alarm not supported", 1) unless exists $Config{'d_alarm'};

    $SIG{ALRM} = sub {
        # We could call anything that modifies $! here, but
        # this way we can be sure that it isn't the same
        # errno as interrupted sleep() would return, and are
        # able to check it thereafter.
        $! = -1;
    };

    alarm 1;
    sleep 2;

    # Interrupted sleeps sets errno to EAGAIN, but signal
    # that # hits after it (if safe signal handling is enabled)
    # causes a routing that modifies $! to be run afterwards
    isnt($! + 0, -1, 'Signal does not modify $!');
}