On Wed Jan 07 13:45:39 2015, barto...@gmx.de wrote:
> Looking at test reports from testers.perl6.org ugexe++ found a bug
> with pipe() on FreeBSD. It looks like closing the returned handle
> happens too early, as shown by the third of following commands:
> 
> $ perl6 -e 'my $cmd = "/usr/bin/false"; say shell("$cmd")'   ##
> expected result
> Proc::Status.new(exit => 1, pid => Any, signal => 0)
> 
> $ perl6 -e 'my $cmd = "/usr/bin/false"; my $handle = pipe("$cmd", :r);
> sleep 2; say $handle.close' ## same
> Proc::Status.new(exit => 1, pid => Any, signal => 0)
> 
> $ perl6 -e 'my $cmd = "/usr/bin/false"; my $handle = pipe("$cmd", :r);
> say $handle.close'  ## wrong
> Proc::Status.new(exit => 0, pid => Any, signal => 0)
> 
> On a linux box it's 'exit => 1' in all three cases.
> 
> Panda currently uses a command like this for it's test and build
> reports. Panda issue 130 (https://github.com/tadzik/panda/issues/130)
> hase some more context.
> 
> I've tested the above with rakudo.moar only.

This seems to be special for Moar:

$ perl6-m -e 'my $cmd = "/usr/bin/false"; my $handle = pipe("$cmd", :r); say 
$handle.close'
Proc::Status.new(exit => 0, pid => Any, signal => 0)
$ perl6-m -e 'my $cmd = "/usr/bin/false"; my $handle = pipe("$cmd", :r); say 
$handle.close.status'
0

$ perl6-p -e 'my $cmd = "/usr/bin/false"; my $handle = pipe("$cmd", :r); say 
$handle.close'
Proc::Status.new(exit => 0, pid => Any, signal => 1)
$ perl6-p -e 'my $cmd = "/usr/bin/false"; my $handle = pipe("$cmd", :r); say 
$handle.close.status'
1

$ perl6-j -e 'my $cmd = "/usr/bin/false"; my $handle = pipe("$cmd", :r); say 
$handle.close'
Proc::Status.new(exit => 0, pid => Any, signal => 1)
$ perl6-j -e 'my $cmd = "/usr/bin/false"; my $handle = pipe("$cmd", :r); say 
$handle.close.status'
1

Reply via email to