$filename
değişkeninde bir dosyaya bir şeyler yazmak istiyorum. Bunu üzerine yazmak istemiyorum, bu yüzden varsa ilk kontrol ve sonra açın:Perl'de mevcut olmayan dosyanın atomik açıklığı
#stage1
if(-e $filename)
{
print "file $filename exists, not overwriting\n";
exit 1;
}
#stage2
open(OUTFILE, ">", $filename) or die $!;
Ama bu atom değildir. Teorik olarak birisi bu dosyayı stage1
ve stage2
arasında oluşturabilir. Her iki şeyi de atomik şekilde yapacak open
komutunun bir varyantı var mı, bu yüzden dosya varsa, bir dosya açmak için başarısız olur?
Bu hala çözmez * Teorik birisi stage1 ve stage2 * sorunu arasındaki bu dosya oluşturabilirsiniz! Dosyaları açmanın sadece bir karalama şekli değil. – creaktive
Elbette öyle. OP'nin sorusundan tamamen "aşama 1" ten kurtulduk. Şimdi sadece bir aşama var: dosyanın açılması! –
Katıldığım için üzgünüm ... Açık olan (FH, "<", $ dosya) || || (! uyku 1) || sysopen (...) '? Hala iki aşama var, onları aynı ifadeye koydun.Yanılıyorsam lütfen beni düzeltin. – creaktive