비동기식으로 파일에 기록하는 로깅 모듈을 테스트하려고합니다 ... 단위 테스트는 기록 된 메시지가 예상과 일치하는지 확인하기 위해 로그를 읽으려고합니다. 그러나 단위 테스트가 끝날 때까지 모듈에 의한 비동기 쓰기가 파일에 도달하지 않는다는 것을 알았습니다. 심지어 임의의 시간 동안 파일을 기다리기 위해 잠든 경우에도 마찬가지입니다. aio_close 옆에 print 문을 추가하여 파일이 마지막까지 닫히지 않는지 확인했습니다. 이것을 시험하기 위해 무엇을 할 수 있습니까?perl에서 비동기 파일을 대기하는 방법
#approximately the way this works:
aio_open($pathname,
$flags,
$mode,
sub
{
my $fh = shift;
aio_write($fh,
0,
length($log),
$log,
0,
sub
{
print "here";
aio_close($fh, sub {});
});
});
멋진 것을 찾으십시오! +1 – DVK
정확하지 않습니다. 'flush'는 보류중인 모든 비동기 액션이 완료 될 때까지 프로그램을 기다립니다. 귀하의 경우, 그것은'aio_close'를 실행하는 것을 포함하는데, 이것은 최종적으로 출력 버퍼를 없애는 것입니다. – mob