Название: Одновременная запись в файл Отправлено: merke от Апрель 03, 2012, 16:42 Всем привет!
Есть консольное приложение, которое запускает php скрипт, в параметрах передает некие идентификаторы, приложение должно открыть файл на чтение сначала, считать от туда реестр, если там не находится полученный идентификатор добавляет его и вписывает его значение единичку, если находит то инкриментирует значение и заново всё это сохраняет на диск. Так вот может получится ситуация, что моё приложение будет запущенно дважды или более в один момент времени, будут траблы как понимаете. Как быть с этим? Подскажите, пожалуйста! Название: Re: Одновременная запись в файл Отправлено: V1KT0P от Апрель 03, 2012, 16:49 Всем привет! 1) Запретить одновременный запуск программы.Есть консольное приложение, которое запускает php скрипт, в параметрах передает некие идентификаторы, приложение должно открыть файл на чтение сначала, считать от туда реестр, если там не находится полученный идентификатор добавляет его и вписывает его значение единичку, если находит то инкриментирует значение и заново всё это сохраняет на диск. Так вот может получится ситуация, что моё приложение будет запущенно дважды или более в один момент времени, будут траблы как понимаете. Как быть с этим? Подскажите, пожалуйста! 2) Открыть файл с параметрами запрещающими другим тоже его открывать. Название: Re: Одновременная запись в файл Отправлено: merke от Апрель 03, 2012, 16:50 спасибо, но не вариант
Название: Re: Одновременная запись в файл Отправлено: V1KT0P от Апрель 03, 2012, 16:55 спасибо, но не вариант 3) Ставить глобальный мьютекс с именем идентификатора на время его использования.4) Определять что запущена твоя же программа и через сокеты координировать действия. Название: Re: Одновременная запись в файл Отправлено: merke от Апрель 03, 2012, 16:56 Во, это уже интереснее, ни разу не юзал такое, можно малюсенький пример, если у вас есть время
Название: Re: Одновременная запись в файл Отправлено: V1KT0P от Апрель 03, 2012, 16:59 Во, это уже интереснее, ни разу не юзал такое, можно малюсенький пример, если у вас есть время Тебе про что про глобальные мьютексы или про сокеты? =).На винде использовал как-то WinApi функцию CreateMutex, которая принимает в качестве параметра строку. Название: Re: Одновременная запись в файл Отправлено: merke от Апрель 03, 2012, 17:00 В данном проекте категорически не использую сокеты, операционная система Debian
Название: Re: Одновременная запись в файл Отправлено: merke от Апрель 03, 2012, 17:02 Думаю может QSharedMemory использовать, но блин должно быть что то очень надежное и более простое
Название: Re: Одновременная запись в файл Отправлено: ecspertiza от Апрель 03, 2012, 17:16 Можешь еще глянуть в сторону
Код: QLocalServer классов, создает локальный сервер по имени, не вдавался как работает. Так же по имени проверяешь коннект, если коннект есть значит прога запущена. Можно и передать ей что то по необходимости. Название: Re: Одновременная запись в файл Отправлено: V1KT0P от Апрель 03, 2012, 17:20 В данном проекте категорически не использую сокеты, операционная система Debian В Линуксе есть semget.Еще можешь тупо во временной папке создавать пустые файлы, которые будут играть роль мьютексов =). |