powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / "мертвая" блокировка файла
7 сообщений из 7, страница 1 из 1
"мертвая" блокировка файла
    #33206301
zayac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UNIX SCO 5.0.7
gcc 2.95.3

Я не совсем уверен к C это относится или к UNIX...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        int my_file= 0 , blocking;
        struct flock arg;
        ...
        my_file=open("fileName",O_RDWR,S_IRUSR|S_IRGRP);
        ...
        arg.l_type=F_WRLCK;
        arg.l_whence= 0 ;
        arg.l_pid= 0 ;
        arg.l_start=arg.l_len=0L;
        ...
        blocking=fcntl(my_file,F_SETLK,&arg);
        ....
        if( blocking ==  0  ){
                arg.l_type=F_UNLCK; arg.l_whence= 0 ;
                arg.l_start=arg.l_len=0L;
                blocking=fcntl(my_file,F_SETLK,&arg);
        }
        ...
Здесь происходит попытка блокировать файл "fileName" на запись. Если попытка успешна - разблокировать.
Эта програмка отрабатывает для N-ого количества файлов, отрабатывает корректно, кроме одного файла.
Произошел сбой питания и судя по всему этот проблемный файл кто-то редактировал. (Я смотрел лог за час до сбоя питания и сразу после - блокирование произошло именно в этот момент.) С тех пор blocking стабильно ==-1. Процесса, который мог бы держать этот файл - нет. Сервер перегружался. Я пробовал преименовывать этот проблемный файл и копировать.
mv bad_file old_bad_file
cp bad_file old_bad_file
и анологично каталог, в котором находится данный файл. Все безрезультатно - файл заблокирован кем-то на запись.

Как снять данную блокировку ? Как такое вообще может быть после перезагрузки сервера ?
...
Рейтинг: 0 / 0
"мертвая" блокировка файла
    #33206408
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zayacКак снять данную блокировку ? Как такое вообще может быть после перезагрузки сервера ?
Такго быть не может :) Скорее всего либо с владельцем файла что-то не так, либо с самим физическим файлом проблемы. Читать его можешь?
Сделай cat bad_file > new_file так копировать проблемные файлы более надежно :)
...
Рейтинг: 0 / 0
"мертвая" блокировка файла
    #33206419
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zayac... Я не совсем уверен к C это относится или к UNIX...
.....

Моё мнение - это относиться к OS. То бишь к юниксу. И собака порылась на уровне файловой системы.

с уважением
(круглый)
ЗЫ
Обычно на отказоустойчивых системах стараються не использовать физическую блокировку. Это инструментарий, достаточно мощный. Обычно накручивают некую логику над этим.
...
Рейтинг: 0 / 0
"мертвая" блокировка файла
    #33206471
zayac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я уже с двумя опытными людьми говорил - именно это и услышал: "Такого не может быть."
Права у файла 664, читаю его владельцем.
kolobok0Обычно на отказоустойчивых системах стараються не использовать физическую блокировку. Это инструментарий, достаточно мощный. Обычно накручивают некую логику над этим.
Это файл - часть таблицы файл-серверной субд. И именно так с ним и надо работать. (Я его собираюсь копировать и перед этим есть только один способ проверить не редактируются ли данные). Структура файла не нарушена, то-есть кроме блокировки на запись - все с ним нормально.
Повторюсь - процесса, который пишет в этот файл я не нашел (да и сервервер перегружали).

Еще один эксперимент провел. Эта таблица - справочник, который не менялся с 2002 года. Поднял из бэкапа, положил на место старой - тоже самое. Выглядит так, как-будто существует процесс, который "держит" файл.

Ну что ж, спасибо, попробую поспрашивать на Linux.
...
Рейтинг: 0 / 0
"мертвая" блокировка файла
    #33206477
zayac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да,
cat bad_file > new_file
я тоже попробовал.
...
Рейтинг: 0 / 0
"мертвая" блокировка файла
    #33208467
ДимГеннадьич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет,
не знаю как в SCO Unix,
а под Linux есть программка lsof

Попробуй глянуть c ее помощью

Димыч
...
Рейтинг: 0 / 0
"мертвая" блокировка файла
    #33211374
zayac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, спасибо, разобрался. Чудес тут не было, а было не предусмотренное мной исключение.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / "мертвая" блокировка файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]