LINUX.ORG.RU

История изменений

Исправление DRVTiny, (текущая версия) :

Кстати, это... попробовал делать unlink до close файла, открытого в режиме «append», оно же «>>» - так вроде работает, и пока я не могу придумать возможные побочные нехорошие эффекты такого подхода.

Собственно простейший тест:

[myhost]$ perl -e 'print "My pid is $$\n"; open my $f, ">", "/tmp/1.txt"; print $f "something\n"; close $f; open $f, ">>", "/tmp/1.txt"; flock $f, 2; print $f "hello\n"; system(qq(ls -l /proc/$$/fd/)); system(qq(xargs -0 </proc/$$/cmdline)); sleep 2; unlink("/tmp/1.txt") or die "cant unlink: $!"; system(qq(ls -l /proc/$$/fd/)); flock $f,8; close $f'
My pid is 31022
total 0
lrwx------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 0 -> /dev/pts/1
lrwx------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 1 -> /dev/pts/1
lrwx------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 2 -> /dev/pts/1
l-wx------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 3 -> /tmp/1.txt
lr-x------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 4 -> pipe:[450566667]
perl -e print "My pid is $$\n"; open my $f, ">", "/tmp/1.txt"; print $f "something\n"; close $f; open $f, ">>", "/tmp/1.txt"; flock $f, 2; print $f "hello\n"; system(qq(ls -l /proc/$$/fd/)); system(qq(xargs -0 </proc/$$/cmdline)); sleep 2; unlink("/tmp/1.txt"); system(qq(ls -l /proc/$$/fd/)); flock $f,8; close $f
total 0
lrwx------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 0 -> /dev/pts/1
lrwx------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 1 -> /dev/pts/1
lrwx------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 2 -> /dev/pts/1
l-wx------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 3 -> /tmp/1.txt (deleted)
lr-x------ 1 a.konovalov a.konovalov 64 Sep 22 16:19 4 -> pipe:[450566673]

Исходная версия DRVTiny, :

Кстати, это... попробовал делать unlink до close файла, открытого в режиме «append», оно же «>>» - так вроде работает, и пока я не могу придумать возможные побочные нехорошие эффекты такого подхода.