Форум: "Основная";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
ВнизДоступ к одному и тому же файлу Найти похожие ветки
← →
Alibaba (2003-08-06 00:43) [0]Всем привет!
Такая ситуация.
Есть три программ Program1, Program2, Program3 которые работают с файлами, находящимися в одной директории C:\Tasks\.
Файлы: File1, File2, File3 - НИКОГДА не бывают пустыми (длина - 0).
Работа заключается в следующем - программы эти файлы открывают, при необходимости изменяют, записывают.
Проблема в следующем: иногда некоторые файлы оказываются пустыми (длина - 0).
Я подозреваю, что это происходит потому, что две программы открыли один файл. Потом одно попыталась его записать, другая запись заблокировала - и получилось, что на диске сохранился файл нелевой длины.
Если мои подозрения правильные - подскажите как правильно поступить в данной ситуации.
← →
Юрий Зотов (2003-08-06 07:01) [1]Уточните - порядок следования записей в файле имеет значение, или безразличен?
← →
Palladin (2003-08-06 07:07) [2]Используй мьютексы.
Windows SDK\Mutex Objects
← →
Anatoly Podgoretsky (2003-08-06 08:01) [3]Смотри share модификаторы
← →
PVOzerski (2003-08-06 08:10) [4]Насчет share модификаторов - это правильно. Только одновременно писать в один и тот же файл из двух программ все-таки не надо (если Вас, конечно, интересует результат :^) ).
← →
Serginio (2003-08-06 15:39) [5]Используй LockFileEx или LockFile для блокировки определенных частей файла и UnlockFile и UnlockFileEx для разблокировки. Но лучще кончно использовать глобальные объекты синхронизации.
← →
Alibaba (2003-08-07 04:39) [6]... сорри за временное отсутствие.
>Юрий Зотов © (06.08.03 07:01)
Порядок следования записей в файле значения не имеет.
>Palladin © (06.08.03 07:07)
Эта мысль посещала меня :) но не имею опыта работы... :(
>Anatoly Podgoretsky © (06.08.03 08:01)
Имеется ввиду:
HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file
( read-write) ... сорри за временное отсутствие.
>Юрий Зотов © (06.08.03 07:01)
Порядок следования записей в файле значения не имеет.
>Palladin © (06.08.03 07:07)
Эта мысль посещала меня :) но не имею опыта работы... :(
>Anatoly Podgoretsky © (06.08.03 08:01)
Имеется ввиду:
HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file
DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes
DWORD dwCreationDistribution, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to file with attributes to copy
);
Попробую в первую очередь идею с CreateFile.
Конечно, хотелось бы примерчик....
Может кто подкинет?
← →
Camus (2003-08-07 06:14) [7]> Alibaba © (07.08.03 04:39)
Если порядок следования записей в файле безразличен, то можно ничего не синхронизировать, а просто установить разделение доступа. Вместо функций API проще использовать их оболочки из VCL - FileCreate, FileOpen, FileRead, FileWrite и т.п. Все они есть в справке, включая и примеры.
← →
Serginio1 (2003-08-07 13:04) [8]http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=9110
← →
Palladin (2003-08-07 13:50) [9]
> Alibaba © (07.08.03 04:39)
потому и неимеешь, что как только соберешься его получить сразу подумаешь что его нет...
← →
Palladin (2003-08-07 13:51) [10]
> Serginio1 (07.08.03 13:04)
Ссылка конечно у тебя в тему, ты бы сам в тему въехл бы сначала.
← →
Serginio1 (2003-08-07 14:15) [11]>Palladin © (07.08.03 13:51)
Обычная организация файл-серверной системы. С блокировкой записей итд. Использование lockFile и UnlockFile предотвращают изменение залученной записи или блокировка всего файла.
← →
Serginio1 (2003-08-07 14:27) [12]http://cpp.hotmail.ru/articles/win32_83.html
http://cpp.hotmail.ru/articles/win32_84.html
← →
Serginio1 (2003-08-07 15:34) [13]http://www.rsdn.ru/Forum/?mid=106075
← →
Serginio1 (2003-08-07 15:42) [14]http://www.rsdn.ru/Forum/?mid=336148
← →
Alibaba (2003-08-08 01:37) [15]> Serginio1
Спасибо.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c