Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HElp я не видел юникс - никогда!!! что за flock? 
:(
    Опции темы
everyone
Дата 27.3.2004, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: 1
Всего: 4



Кто-нибудь расскажет мне, что такое flock, а то наивный автор учебника по Perl написал следующее:

flock файл, операция
Системный вызов flock()

видно, думая, что все такие чумовые и работают на Unix, но я кроме виндов ничем никогда не пользовался и по-этому в этой области не грамотный. Да, ещё в MS-DOS есть некий lock, который блокирует диск, обеспечивая прямой доступ к нему приложения, может быть они как-то связаны?
И.. ещё - куда писать команды отладчика?
И может быть учебник у кого-нибудь есть по-эффективнее, буду благодарен.
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
Secandr
Дата 27.3.2004, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: нет
Всего: 39



Эта команда позволяет заблокировать файл на запись, пока ты с ним работаешь, чтобы не повредить данные при одновременном доступе.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
GoodBoy
Дата 29.3.2004, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



Цитата
наивный автор учебника по Perl
Имеется ввиду г-н Маслов?? :-)))))

Точнее будет сказать, что эта команда позволяет заблокировать/разблокировать файл. И в Windows не работает.

Цитата
int flock(int fd, int operation)

DESCRIPTION
       Apply  or  remove  an  advisory lock on an open file.  The
       file is specified  by  fd.   Valid  operations  are  given
       below:

              LOCK_SH   Shared  lock.   More than one process may
                        hold a shared lock for a given file at  a
                        given time.

              LOCK_EX   Exclusive  lock.   Only  one  process may
                        hold an exclusive lock for a  given  file
                        at a given time.

              LOCK_UN   Unlock.

              LOCK_NB   Don't  block when locking.  May be speci-
                        fied (by or'ing) along with  one  of  the
                        other operations.

       A  single file may not simultaneously have both shared and
       exclusive locks.

RETURN VALUE
       On success, zero is returned.  On error, -1  is  returned,
       and errno is set appropriately.


Это сообщение отредактировал(а) GoodBoy - 29.3.2004, 10:33


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
korob2001
Дата 29.3.2004, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 6
Всего: 61



Цитата

Точнее будет сказать, что эта команда позволяет заблокировать/разблокировать файл. И в Windows не работает.

Очень даже работает

Вот пример, с помощью которого это можно проверить:
Код

#!/usr/bin/perl -w
use strict;
use warnings;
use Fcntl qw( :flock );

my $file_lock = 'lock.fc';
my $file_base = 'base.txt';

sub start_lock {
   open( BLOCK, "> $file_lock" ) or die "Не могу открыть файл блокировки: $!";
   flock( BLOCK, LOCK_EX ) or die "Не могу заблокировать файл: $!";
}

sub stop_lock {
   close( BLOCK ) or die "Не могу закрыть файл блокировки: $!";
}

start_lock;
    open( DB, ">> $file_base" ) or die "Не могу открыть файл базы: $!";
    while ( 1 ) {
       print "Please enter one string or 'exit or quit' for exit: ";
       chomp( my $string = <STDIN> );
       last if $string =~ /^(?:exit|quit)$/i;
       print DB $string, "\n";
    }
   close( DB ) or die "Не могу закрыть файл базы: $!";
stop_lock;

Теперь сохраним это дело в файл и откроем два окна командной строки, желательно уменьшить их так, что бы было видно оба окна одновременно.
Теперь в первом окне вводим команду:

C:\>perl имя_файла

и сразу пишем тоже самое во втором окне. После не сложно заметить что в первом окне появилось приглашение для ввода строк, а во втором нет ничего - стоим в очереди.
Теперь введём пару строк
А затем введём quit или exit, при нажатии на enter наблюдаем за вторым окном. Как только вы нажмёте ВВОД, во втором окне появится приглашение програмы - подошла очередь.

Все введённые строки будут записаны в файл base.txt в рабочем каталоге.

Тоже можно проделать и с большим количеством окон, причём очередь не будет нарушена.

Это сообщение отредактировал(а) korob2001 - 6.4.2004, 20:53


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
GoodBoy
Дата 29.3.2004, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



2 korob2001 маленькое уточнение, какой у тебя Windows то??? :-)))) В 98 и Линолеуме - однозначно работать не будет!!! И в NT/XP тоже скорее всего не заработает, если не NTFS...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
korob2001
Дата 30.3.2004, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 6
Всего: 61



У меня WinXP Pro, файловая система FAT-32


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
GoodBoy
Дата 30.3.2004, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



Это хорошо, значит в XP уже есть поддержка flock'а. Когда я в последний раз пробовал воспользоваться этим в Винде (98 OSR2) тогда еще не работало... :-)))


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
everyone
Дата 30.3.2004, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: 1
Всего: 4



Да, спасибо вам, ещё бы немного и я бы свихнулся, я думал, что это из-за моей тупости а оказывается из-за виндов,.. adv/72.gif happy.gif
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
korob2001
Дата 30.3.2004, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 6
Всего: 61



Цитата

Да, спасибо вам, ещё бы немного и я бы свихнулся, я думал, что это из-за моей тупости а оказывается из-за виндов

А у тебя какой Windows?
Ты попробовал вышеприведённый пример? Если да, какой результат?


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
everyone
Дата 1.10.2004, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: 1
Всего: 4



Цитата
Ты попробовал вышеприведённый пример? Если да, какой результат?


Вышеприведённый не пробовал, как-то по-своему писал, но flock стопудово полностью функционален, запирает файл насмерть до конца программы или параметра LOCK_UN.
У меня Win XP prof. sp1, но тогда, по-моему был 9X, соответственно - никакого эффекта не было.

Это сообщение отредактировал(а) everyone - 1.10.2004, 22:32
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0830 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.