class X::Proc::Async::OpenForWriting is Exception {}

Proc::Async 对象仅对外部程序打开以进行读取(未将 :w 传递给 open),并且执行了诸如 writeprintsay 的写入操作时,将抛出类型为 X::Proc::Async::OpenForWriting 的异常

my $proc = Proc::Async.new("echo");
$proc.start;
$proc.say(42);
CATCH { default { put .^name''.Str } };
# OUTPUT: «X::Proc::Async::OpenForWriting: Process must be opened for writing with :w to call 'say'␤»

要修复此问题,可以使用带有 :w 标志的可写命令

my $prog = Proc::Async.new(:w'cat');
$prog.stdout.tap-> $str {
    print $str;
});
my $promise = $prog.start;
await $prog.say('foo');
$prog.close-stdin;
await $promise;

方法§

方法 method§

method method(X::Proc::Async::OpenForWriting:D:)

返回导致异常的被调用的方法名称。