![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| rarelang |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 15.4.2004 Репутация: нет Всего: нет |
Всем добрый день.
Посоветуйте мне пожалуйста решение для следующей проблемы: Я пишу CGI приложение с использованием C++, основная моя цель написать приложение свободно переносимое как под Windows так и под Linux/UNIX FreeBSD. В приложении мне нужно обеспечить последовательный доступ к определенным файлам для запускаемых в произвольном количестве CGI приложений. Т.е. я ни в коем случае не должен допустить одновременного доступа к определенным файлам (которые представляют собой что-то вроде базы данных) более чем одной копии CGI приложения. Мне посоветовали использовать lock-файл. Насколько я понимаю я должен использовать ANSI С/С++ и POSIX функции которые бы работали как в Windows так и в Linux/UNIX. Дополнительная проблема состоит в том что если к примеру во время работы одного из CGI полетит сервер то lock-файл удален не будет и таким образом ни один из последующих запусков CGI успешным не будет пока кто-то вручную этот lock-файл не удалит. Как я понимаю алгоритм можно разбить на две функции Lock() и Unlock() - Алгоритм Lock() следующий: 1 - создание lock-файла 2 - проверка времени создания файла и если он создан позднее чем к примеру 15 минут назад то значит что файл недействителен и можно устанавливать lock 3 - создание файла блокировки или ожидание пока другая копия CGI снимет блокировку Алгоритм Unlock() следующий: 1 - удаление lock-файла Подскажите мне пожалуйста функции создания и проверки времени и факта существования файла которые бы работали под Windows, Linux и UNIX, насколько я знаю такие функции существуют. Заранее спасибо. |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
я не знаток юникса, но имхо функции crt должны работать везде.
fopen - создание/открытие findfirst - проверка факта существования и времени создания соотв. fclose и findclose - закрытие |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |