在 Proc::Async 中§

有关方法 stderr,请参阅主要文档 in context

method stderr(Proc::Async:D: :$bin --> Supply:D)

返回外部程序的标准错误流的 Supply。如果传递了 :bin,则标准错误将作为 Blob 以二进制形式传递,否则将被解释为 UTF-8,解码并作为 Str 传递。

my $proc = Proc::Async.new(:r'echo''Raku');
$proc.stderr.tap-> $str {
    say "Got error '$str' from the external program";
});
my $promise = $proc.start;
await $promise;

您必须在调用 .start 之前调用 stderr。否则,将抛出类 X::Proc::Async::TapBeforeSpawn 的异常。

如果未调用 stderr,则根本不会捕获外部程序的标准错误流。

请注意,您不能在同一对象上同时使用和不使用 :bin 调用 stderr;如果您尝试这样做,它将抛出类型为 X::Proc::Async::CharsOrBytes 的异常。

对于合并的 STDOUT 和 STDERR,请使用 .Supply