Closing this myself in favor of this ticket:
https://github.com/perl6/doc/issues/1567

On 2017-07-17 23:51:21, alex.jakime...@gmail.com wrote:
> Alright, it seems that rakudo is not entirely incorrect here. See this
> discussion: https://irclog.perlgeek.de/perl6-dev/2017-07-18#i_14885863
>
> TL;DR, one should use something like this:
>
> whenever $proc.print(“one\ntwo\nthree\nfour”) { $proc.close-stdin }
>
> So it seems that it's not a bug, but a trap maybe?
>
> I'll leave this for somebody else to close.
>
> On 2017-07-17 22:45:01, alex.jakime...@gmail.com wrote:
> > Code:
> >
> > sub get-output() {
> > my $proc = Proc::Async.new: :w, ‘head’, ‘-n’, ‘1’;
> > my $success;
> > react {
> > whenever $proc.stdout { $success = True }
> > whenever $proc.start { die ‘FAIL!’ unless $success }
> >
> > $proc.print: “one\ntwo\nthree\nfour”;
> > $proc.close-stdin;
> > }
> > say $++;
> > }
> >
> > loop { get-output }
> >
> >
> > Again, the result depends on your luck. Ideally it should not “die”
> > ever, because there should always be one line in the output and
> > therefore $success will be set to true. However, sometimes its stdout
> > is empty and therefore it fails. It may fail after 20+ executions, and
> > sometimes it fails almost immediately.
> >
> > Related ticket: https://rt.perl.org/Ticket/Display.html?id=131763

Reply via email to