+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
+}
+