我正在嘗試測試異步寫入文件的日誌記錄模塊...單元測試嘗試讀取日誌以確保書面消息與預期匹配。但是,我發現模塊的異步寫入直到單元測試完成後纔會到達文件,即使我正在睡眠以等待文件達任意長度的時間。我通過在aio_close旁邊添加打印語句來驗證文件沒有被關閉。我能做些什麼來測試呢?如何等待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