Есть код на perl работающий на Windows, который пишет данные в файл.
use warnings;
use feature 'say';
open(FH, '>', 'file.txt');
$i = 10;
while ($i > 0) {
say FH $i;
say $i;
sleep 1;
$i--;
}
close(FH)
Во время записи другая программа пытается открыть этот файл для чтения и валится с ошибкой "IO error 32 - The process cannot access the file because it is being used by another process."
Замена
open
на
sysopen
с добавлением атрибута
O_NONBLOCK
не работает.
use Fcntl qw(O_WRONLY O_CREAT O_APPEND O_NONBLOCK);
sysopen(FH, 'file.txt', O_WRONLY | O_CREAT | O_APPEND | O_NONBLOCK);
Ошибка:
Your vendor has not defined Fcntl macro O_NONBLOCK
Использвание
sysopen
без
O_NONBLOCK
ничего не даёт.
Windows 7, Strawberry Perl 5.16.3