2013-03-11 9 views

cevap

9

Yapmıyor. close() numaralı telefonu çağırmak, OS işletim sisteminin yazımları ertelemiş olabileceğinden, içeriğin diskte olduğunu garanti ETMEZ.

Yan not olarak, her zaman close() dönüş değerini kontrol edin. Bu noktaya kadar ertelenmiş hatalardan haberdar edersiniz. Ve içeriğin diskte olduğundan emin olmak istiyorsanız, her zaman fsync()'u arayın ve dönüş değerini de kontrol edin.

Akılda tutulması gereken bir şey destek deposunun ne olduğudır. Dahili yazma erteleme yapabilen cihazlar ve bazı durumlarda içerik kaybolabilir (daha yeni depolama ortamı aygıtları genellikle bunu önlemek için süper kapasitörlere veya bu özelliği devre dışı bırakma yollarına sahip olsa da).

+0

'fsync()' * çağrısı, aynı nedenlerden dolayı (donanımda yazılanları ertelemiş olabilir) ya * yoktur. –

+0

@ FrédéricHamidi 'fsync()', yazım hatalarını depolama koşullarına zorlar (hangi durumlarda fsync diskteki içeriği garanti etmez) (bazı durumlarda kontrol edilemeyen tek hatalar ve donanım ertelenmiş yazılar hariç)? –

+0

Disk denetleyicisinde başka bir önbellek katmanı olabilir (ve genellikle), yani 'fsync()' bile verilerinizin gerçek donanıma yapmasını garanti edemez. Close() için [man page] (http://linux.die.net/man/2/close) bunu belirtiyor. –

1

sayılı

man 2 close itibaren Başarılı yakın çekirdek yazıyor ertelemektedir olarak veri başarıyla diske kaydedilmiş olmuştur garanti etmez. , bir dosya sistemi akış kapatıldığında arabellekleri yıkamak için yaygın değildir. Verilerin fiziksel olarak saklanan fsync (2) olduğunu olduğundan emin olmanız gerekir. (Bu noktada, disk donanım bağlı olacaktır.) man 2 close itibaren

0

: Çekirdek yazıyor defers olarak

Başarılı yakın veriler başarıyla diske kaydedilmiş olmuştur garanti etmez . Bir dosya sistemi, akış kapalı olduğunda arabellekleri yıkamak için ortak değildir. Verilerin fiziksel olarak saklandığından emin olmanız gerekiyorsa fsync (2) 'yi kullanın. (Bu noktada disk sabit eşyalar bağlıdır.)

sorunuza gelince, HAYIR, close()fsync()

close sadece süreci ve uzaklaşmaların için dosya tanıtıcı kapatır garanti etmez İşlemle ilişkili tüm kayıt kilitleri.

İlgili konular