Raku의 bind-stderr — 프로세스 표준 오류를 핸들에 연결
Raku의 bind-stderr — 프로세스 표준 오류를 핸들에 연결
외부 프로세스를 띄울 때 그 프로세스의 표준 오류(STDERR)를 파일 핸들로 받아오고 싶을 때가 있어요. Proc::Async의 bind-stderr 메서드가 그 역할을 해요. 대상 프로세스의 STDERR를 핸들(열려 있어야 함)로 리다이렉트해요.
method bind-stderr(IO::Handle:D $handle)
본문
method bind-stderr(IO::Handle:D $handle)
대상 프로세스의 STDERR를 핸들로 리다이렉트해요. 만약 STDERR가 닫혀 있으면 X::Proc::Async::BindOrUse 예외가 발생해요. 핸들은 반드시 열려 있어야 해요.
예시로 ls를 띄우고 그 표준 오류를 파일에 담아볼게요.
my $p = Proc::Async.new("ls", "--foo", :err);
my $h = "ls.err".IO.open(:w);
$p.bind-stderr($h);
$p.start;
이렇게 하면 ls가 내는 표준 오류가 ls.err 파일로 기록돼요. bind-stdin이 표준 입력을 연결하는 것과 대비해서, bind-stderr는 표준 오류를 연결한다고 기억하면 돼요.