मैं विंडोज़ में एक साथ लिखने और पढ़ने के लिए एक फ़ाइल खोलने की कोशिश कर रहा हूं। मेरे पास एक प्रोग्राम है जो फ़ाइल में (प्रत्येक एक सेकेंड) लिखता है और जो इसे पढ़ता है। यूनिक्स में यह पहले से काम करता है लेकिन यह विंडोज़ में काम नहीं करता है (मैं पहले से खोला गया फाइल नहीं खोल सकता)। मैं फ़ाइल को fopen() के साथ खोलता हूं।(विंडोज़) एक ही फाइल को एक साथ खोलें
मैं इस समस्या को कैसे हल कर सकता हूं?
EDIT2:
जांच _fsopen
यह FILE *
का उपयोग करता है, और साझा झंडा अनुसार सेट।
संपादित करें:
सबसे पहले, कुछ कोड: यह कैसे मैं फ़ाइल
FILE* f = NULL;
int res = fopen_s(&f, "c:\\temp\\File1.txt", "w");
if (res != 0) return;
while (true) {
Sleep(1000);
fprintf_s(f , "Some data");
}
fclose(f);
पढ़ा अन्य applicaiton में था खोलने के लिए किया है, लेकिन यह fscanf
बजाय किया है।
तय कोड:
char d[] = "data";
HANDLE h = CreateFile("c:\\temp\\f.txt", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, CREATE_ALWAYS, /*FILE_ATTRIBUTE_NORMAL*/ FILE_FLAG_WRITE_THROUGH, NULL);
if (h == INVALID_HANDLE_VALUE) return 0;
DWORD bytesW;
while(true) {
Sleep(100);
WriteFile(h, d, strlen(d), &bytesW, NULL);
}
CloseHandle(h);
return 0;
शायद इससे मदद मिलेगी: http://stackoverflow.com/questions/11566930/can-i-allow-multiple-programs-to-read-from-the-same-file-at-the-same-time – Nim
शायद यूनिक्स पर काम करने वाले सरल उदाहरण (जैसे खुले और नींद) प्रोग्राम जोड़ें, इसलिए किसी के लिए विन कोड करने के लिए यह आसान है। – hyde
कृपया कोड दिखाएं। वीएस 2008 के माध्यम से वीएस 2008 के माध्यम से एक त्वरित परीक्षण इंगित करता है कि 'fopen() 'को फ़ाइल लिखने और पढ़ने के लिए फ़ाइल खोलने में कोई समस्या नहीं है (' fopen() '' FILE_SHARE_READ | FILE_SHARE_WRITE' पहुंच का उपयोग करता है)। –