Автор Тема: Проверить, заблокирован ли файл?  (Прочитано 5654 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Проверить, заблокирован ли файл?
« : 08 Октября 2002, 19:58:39 »
Привет всем!
Подскажите пожалуйста, как проверить, заблокирован ли файл ф-цией flock (из другого скрипта).
Первый скрипт:

open(F,">>lock_test.txt");
flock(F,2);
sleep(60);
close(F);

Второй скрипт:

if (open(F,"{  print "\\n\\nlock_test.txt opened.";
   close(F);
}
else
{  print "\\n\\nlock_test.txt not opened!";
}


Сначала запускаю первый скрипт, потом второй. Вывод второго: "lock_test.txt opened".
Разве не должна ф-ция open возвращать false?
Большое спасибо.

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Проверить, заблокирован ли файл?
« Ответ #1 : 08 Октября 2002, 20:48:27 »
Я так понимаю, что ты сначала запускаешь первый скрипт, а потом - второй. Только блокировка осуществляется во время выполнения выполнения скрипта, а при завершении исполнения все блокировки сбрасываются.
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Проверить, заблокирован ли файл?
« Ответ #2 : 09 Октября 2002, 00:49:22 »
Вообще-то GotZfild прав. Блокировки должны сбрасываться.
И вообще лучше открывать через fopen
Подробности тут( особенно комментарии):
http://www.php.net/manual/en/function.flock.php
AS IS...

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Проверить, заблокирован ли файл?
« Ответ #3 : 09 Октября 2002, 10:11:00 »
Весь прикол в том, что если ты заблокировал файл одной прогой "на запись" а второй хочешь его прочитать(без попытки заблокировать) - это у тебя получится! :) Почему? Читай доки...;)

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Проверить, заблокирован ли файл?
« Ответ #4 : 09 Октября 2002, 11:38:21 »
Да, вначале запускаю первый скрипт, потом, пока он спит 60 секунд, запускаю второй.
Если не нравиться, что второй скрипт открывает на чтение, могу и на запись попробовать, результат тот же.
Файл lock_test.txt в начале не существуют.
Первый скрипт:

open(F,">lock_test.txt");
flock(F,2);
print F "This is my text.";
sleep(60);
close(F);

Второй скрипт (запускается через 5 секунд после старта первого):

if (open(F,">lock_test.txt"))
{  print "\\n\\nlock_test.txt opened for writing.";
   print F "Whtat the fuck?!";
   close(F);
}
else
{  print "\\n\\nlock_test.txt not opened!";
}


Вывод второго: "lock_test.txt opened for writing.".
В файле lock_test.txt содержится текст "This is my text."
Ну так как же проверить, заблокирован ли файл?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Проверить, заблокирован ли файл?
« Ответ #5 : 09 Октября 2002, 12:08:13 »
Насколько я понял:
perldoc -f stat
The documentations is your friend

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Проверить, заблокирован ли файл?
« Ответ #6 : 09 Октября 2002, 12:59:26 »
Цитировать
Насколько я понял:
perldoc -f stat

Не могли бы вы пояснить?
Насколько я знаю, ф-цией stat пожно получить права доступа к файлу, дату изменения и доступа. Но не информацию о блокировке.
Или я ошибаюсь?

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Проверить, заблокирован ли файл?
« Ответ #7 : 09 Октября 2002, 17:04:17 »
Evgeny, Serchey тебе правильно ответил: файл нужно блокировать из всех программ, обращающихся к нему. Чтобы проверить, попробуй заблокировать: вернет истину - значит не был заблокирован, вернет ложь - уже кем-то заблокирован.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Проверить, заблокирован ли файл?
« Ответ #8 : 10 Октября 2002, 12:16:21 »
YA, теперь понятно, спасибо.

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Проверить, заблокирован ли файл?
« Ответ #9 : 10 Октября 2002, 12:18:55 »
А мне? ;)

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Проверить, заблокирован ли файл?
« Ответ #10 : 10 Октября 2002, 14:28:49 »
[OFF]Serchey, будешь в Москве, поделюсь "спасибом". :);)
[/OFF]
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Проверить, заблокирован ли файл?
« Ответ #11 : 10 Октября 2002, 14:54:28 »
Serchey, ты тоже конежно имелся в виду. По умолчанию ;)

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Проверить, заблокирован ли файл?
« Ответ #12 : 11 Октября 2002, 00:06:54 »
:beer:

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28