Как проверить, что копирование файла уже завершено? #432629


#0 by Serg_1960
Как разрулить ситуацию (например: обмен данными через каталог) когда одна программа ещё пишет файл, а другая пытается его уже читать? Реализовал через попытку - но не нравится такой вариант...
#1 by shuhard
семафор - например писать второй пустой файлик в момент завершения записи основного
#2 by Serg_1960
А как с семафором работать? Его ведь тоже "сбрасывать" надобно? Старая песня на новый лад... :(
#3 by wason
при начале записи удаляеш файлик или кажды файлик для каждого файла
#4 by vde69
практически 100% гарантия целостности
#5 by H A D G E H O G s
Могу внешку написать. Там строго - если для файла есть дескриптор на запись - значит кто-то пишет. А может и не пишет, но имеет желание записать..
#6 by vde69
тогда уж лучше через блокировку решать, дискриптр далеко не всегда найдешь :) кстати через блокировку можно организавать очередь к файлу от разных процессов, примерно так я себе в блокировке пользователей делал, удобно!
#7 by shuhard
[Его ведь тоже "сбрасывать" надобно] дык писатель семафор записал читатель семафор удалил фокус в том, что файл нулевой длины и блокировка не возникает
#8 by H A D G E H O G s
Дескриптор есть всегда, если юзается ФС операционки.
#9 by H A D G E H O G s
Можно вообще гадость сделать: сделать DuplicateHandle с закрытием дескриптора источника и закрыть скопированный дескриптор через CloseHandle. Винда сбросит кэш на диск, (возможно)пишущее приложение жесктоко обламается..
#10 by vde69
дискриптр это указатель на буфер обмена в памяти компа, интересно как ты найдешь мой дисктриптр файла замапеного диска если я к нему подключусь с удалеленной машины через скрытую шару, да и если там система far16
#11 by H A D G E H O G s
<<дискриптр это указатель на буфер обмена>> Нифига подобного. Это идентификатор объекта Винды. Если ты подключаешься удаленно, то владельцем дескриптора будет процесс csrss.exe  (вроде бы он), только и всего.
#12 by H A D G E H O G s
<<да и если там система far16>> FAT16 слышал, far16 - нет. Это разные вещи?
#13 by Wehrmacht
FAT16 сейчас да, у каждого второго стоит...
#14 by H A D G E H O G s
Ты - не поверишь!
#15 by H A D G E H O G s
У каждого первого. У прогов - почти наверняка.
#16 by vde69
fat16 (опечатка) удаленное файловое хранилище может быть вообще на линухе или вообще с использованием внешнего ftp хранилища, или еще на чем, а диск замаплен, по этому дискриптр ты вряд-ли найдешь если файл открыт на чужей машинке. а вот блокировка - она работает практически везде :) хотя конечно я могу ошибатся!
#17 by Serg_1960
Спасибо всем. Попробую и файл-семафор и дескрипторы. С файлом-семафором есть первые мысли: файл-светофор с изменяемым наименованием. Его ведь даже не надо читать перед началом работы первой программы: достаточно проверить, что он существует... надо еще раз всё обдумать... Всем спасибо :)
#18 by H A D G E H O G s
Флэшки. Про Линух или ftp хранилище - ничего не скажу, туда я не ездун.
#19 by Serg_1960
Не повод спорить :( Всяко бывает... у меня, например, пингвин с форточками :))
#20 by Wehrmacht
Ты серьезно собрался искать "дисктриптр файла замапеного диска если я к нему подключусь с удалеленной машины через скрытую шару, да и если там система far16" на флешке?!
#21 by НЕА123
как вариант. писать во временный файл на том же диске, после записи переименовать.
#22 by Serg_1960
Сорри, для меня - не вариант. Транспорт файлов через инет с докачкой - отдельная программа.
#23 by Serg_1960
Невнятно как-то сказал, сорри :( Обе программы имеют доступ к каталогу обмена, но основной файл отдельной, сторонней программой передается для надежности доставки.
#24 by vde69
чем тебе не подходит? там задейстован транкзационный механизм, гарантия просто офигительная, кроме того перед отправкой в таблицу пишется общий размер (можно и CRC до кучи писать) и при чтении проверять....
#25 by Икогнито
В конец файла добавь строчку типа "&END". По наличию этой строки суди о том, записался файл до конца или не записался.
#26 by Икогнито
+ по такому типу простейший текстовый обмен осуществляется...
#27 by Serg_1960
С Вашей разработкой знаком. Всем подходит и устраивает. Вот только политика безопасности, блин, понимаешь... Есть реализованный, одобренный "сверху", механизм обмена информацией между филиалами организации - я под него "подстраиваюсь".
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С