"sudo!" => \$sudo,
);
+sub test_pipe_read {
+ my $data = '';
+ sysread STDIN, $data, 4096 and syswrite STDOUT, "recvd\n" until $data =~ /done/;
+ syswrite STDOUT, 'done';
+}
+
+sub test_pipe_write {
+ my ($rin, $rout);
+ vec($rin, fileno STDIN, 1) = 1;
+ syswrite STDOUT, "data\n" until select $rout = $rin, undef, undef, 0.05;
+ syswrite STDOUT, 'done';
+ my $data = '';
+ sysread STDIN, $data, 4096 until $data =~ /done/;
+}
+
+sub test_pipes {
+ $ARGV[0] =~ /prog/ ? test_pipe_read : test_pipe_write
+}
+
my $killuser = $ENV{GRUNTMASTER_KILL_USER};
my @sudo;
@sudo = (shellwords ($ENV{GRUNTMASTER_SUDO}), '--') if $ENV{GRUNTMASTER_SUDO} && $sudo;
POSIX::close $oldfd or die $!;
}
}
+ test_pipes if grep /tty|fifo/, @fds;
my $nproc = $killuser ? 15 : 1;
my $debug = $ENV{TEST_VERBOSE};
%ENV = (ONLINE_JUDGE => 1, PATH => $ENV{PATH}, HOME => $ENV{HOME});