Bir dizi veri dosyasını okutan ve bazı model hesaplamaları yapan bir uygulamam var. aşağıda gösterildiği gibi program verileri dosyalarının kendilerini değiştirmek gerekmez, bu yüzden şu anda salt okunur bayrağıyla onları açıyorum:Birden çok programın aynı dosyadan aynı anda okunmasına izin verebilir miyim?
FILE* file;
if(_wfopen_s(&file, fname.c_str(), L"r") == 0)
...
aynı çalışan benim programın birkaç istiyorum Aynı veri kümesini kullanarak, ancak veriler üzerinde farklı hesaplamalar yaparak zaman. Programlarımın hiçbiri veri dosyalarını değiştirmemelidir. Veri dosyaları çok büyük olduğundan, her programla kullanılacak verilerin ayrı kopyalarını oluşturamıyorum.
Bunun nedeni, dosyaları salt okunur izinlerle açtığım için, iki programın aynı anda aynı dosyadan okunabileceğini varsaydım. Bunun yerine, "başka bir işlem tarafından kullanıldığından dosya açılamadı" satırlarında çeşitli hatalar alıyorum.
Benim geliştirme ortamım Windows 7, this question suggests it might be a matter of enabling read sharing. Ancak, bu iş parçacığının tüm yanıtları CreateFile güveniyor, ben stdio.h ile yazılmış eski kod ile uğraşıyorum.
Fopen işlev sınıflarını kullanarak bir dosyadan eşzamanlı olarak okunan birkaç programa sahip olduğum bir yol var mı?
Bence CreateFile() işlevini kullanmanın başka bir yolu yoktur. Soru, bir HANDLE’dan nasıl bir FILE * elde edilebileceğidir. – Paranaix
std :: ifstream'i de kullanabilirsiniz .. tüm bunlar C++ olarak etiketlendikten sonra? – stijn
@Paranaix: '_open_osfhandle' ve sonra' _fdopen'. – MSalters