Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-68538
Hydra
2003-08-05 06:21
2003.08.21
Лечение зубчиков


9-68141
Kolya
2002-10-21 04:17
2003.08.21
Нужен алогритм поворота картинки


3-68250
II
2003-07-25 16:41
2003.08.21
Как отловить изменение значения в TTable


3-68212
Magic&Wizard
2003-07-24 20:41
2003.08.21
КАК отловить, что запись в базе уже СУЩЕСТВУЕТ


3-68197
adolf_99
2003-07-28 13:33
2003.08.21
Filter





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский