Tengo una buena como esta... directamente de la documentación.
my $proc = Proc::Async.new: 'raku', 'script.raku'; $proc.stdout.tap(-> $v { print "Output: $v" }, quit => { say 'caught exception ' ~ .^name }); $proc.stderr.tap(-> $v { print "Error: $v" }); my $promise = $proc.start; Thread.start: { await $promise;} sleep 30;
El script produce datos en stdout y stderr. Pero solo imprime una línea .. Salida: algo
Detiene la impresión de información... El script produce muchos más resultados... ¿Cuál podría ser el problema?
Necesita una await $promise
al final de su programa, de lo contrario, podría salir antes de que el programa al que llama haya terminado de ejecutarse.
Actualización (después de que OP editó su publicación).
OP también dijo fuera de stackoverflow:
La salida completa se imprime cuando finaliza el programa... con un retraso considerable.
Si ese es el caso, es probable que el problema esté en el programa al que se llama, que almacena en búfer su STDOUT (y posiblemente STDERR), por lo que el programa de observación ni siquiera tiene acceso anticipado a su salida.
Llamar a flush en el identificador apropiado en el programa llamado podría ayudar.