BEGIN { $| = 1; print "1..4\n"; } use AnyEvent::Util; use AnyEvent::Fork; use Proc::FastSpawn; print "ok 1\n"; my $fh = do { my ($a, $b) = AnyEvent::Util::portable_socketpair or die; open $oldin , "<&0" or die; open $oldout, ">&1" or die; open STDIN , "<&" . fileno $b or die; open STDOUT, ">&" . fileno $b or die; #spawn $^X, ["perl"]; spawn "/usr/bin/rsh", ["rsh", "rain", "perl"]; open STDIN , "<&" . fileno $oldin ; open STDOUT, ">&" . fileno $oldout; $a }; print "ok 2\n"; my $fork = new_from_stdio AnyEvent::Fork $fh; $fork->eval ('sub prr { syswrite STDOUT, "ok 3\n"; exit }'); $fork->run ("prr", my $cv = AE::cv); $fh = $cv->recv; AnyEvent::Util::fh_nonblocking $fh, 0; print <$fh>; print "ok 4\n";