Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Знатокам Ubuntu


Юрий Зотов ©   (11.10.17 20:10

Что произойдет, если одна программа пишет файл, а в это же время другая программа пытается его читать?

а). Ошибки не будет, вторая программа прочитает сколько есть;

б). Ошибки не будет, но система приостановит вторую программу до окончания записи и закрытия файла первой программой;

в). Вторая программа не увидит файла и выдаст ошибку "Файл не найден";

г). Вторая программа выдаст ошибку "Нет прав";

д). Вторая программа выдаст ошибку совместного доступа;

е). Еще что-то (что именно?).


DayGaykin ©   (11.10.17 20:15[1]

Причем здесь убунту? От программ зависит. tail -f же может читать файл, в который кто-то пишет, значит а) как минимум.

Забавно ещё то, что в Линукс удаление файла не мешает продолжать работать с ним.


Inovet ©   (11.10.17 20:18[2]

А Юниксах доступ принципиально отличается от Виндоус?


rrrrrr ©   (11.10.17 20:28[3]

cat /var/log/syslog

даст исчерпывающий ответ на все вопросы.


Pavia ©   (11.10.17 21:59[4]

Пункт А.
Если за лочить, то пункт Г может быть Д.

В отличие от виндов в линуксе по умолчанию общий доступ разрешён. И файлы надо специально лочить есть api flock
или QT есть QLockFile

Е - в линуксе есть файл очередь и файл стек. Если открыть файл-очередь то программа открывшая очередь на чтение будет ждать пока не появиться программа которая пишет.


Styx ©   (11.10.17 22:08[5]


> И файлы надо специально лочить есть api flock

Возможность лочить зависит от файловой системы. На стандартной ext3/4 всё есть, а на распределённой lustre по умолчанию локов нет.


Pavia ©   (11.10.17 22:21[6]

Что приводит к пункту В - честно не знаю. Но наблюдать наблюдал когда суперпользователь создаст файл, а юзер его не видит до тех пор пока файл не создастся. Но по моему это был QNX, а не убунту такого поведения я не припомню. - и в документации такого я не нашёл.

Б - есть такое.

> А Юниксах доступ принципиально отличается от Виндоус?

Принципиально нет, а вот справка такова, что голову сломать можно.


Pavia ©   (11.10.17 22:28[7]


> Возможность лочить зависит от файловой системы. На стандартной
> ext3/4 всё есть, а на распределённой lustre по умолчанию
> локов нет.

Так локи через VFS работают им без разницы ext или lustre. Просто за абстракцию для VFS взят EXT3. Если ядро старое то да там локи работать не будут.


Styx ©   (11.10.17 22:49[8]


> Если ядро старое то да там локи работать не будут.

Не, там не в ядре дело. Там надо именно монтировать файловую систему с поддержкой локов. Как-то так:
flock  Enable full flock support, coherent across all client nodes.
localflock Enable  local  flock  support,  using  only  client-local  flock (faster,  for  applications that require flock but do not run on multiple nodes).
noflock Disable flock support entirely.  Applications calling flock will get an error.
http://manpages.ubuntu.com/manpages/precise/man8/mount.lustre.8.html
Но это специфика распределённой системы - нормальный полный лок на петабайтном томе с тысячами клиентских узлов будет тормозить безумно, поэтому без острой необходимости его включать никто не будет.


tesseract ©   (13.10.17 14:39[9]

>>Если ядро старое то да там локи работать не будут.

Насколько старое должно быть ядро, если у тэннебаума описан эксклюзивный режим?
В 2+ уже точно была таблица блокировок.

>>В Юниксах доступ принципиально отличается от Виндоус?

Радикально разное внутреннее устройство.


Inovet ©   (13.10.17 14:59[10]

> [9] tesseract ©   (13.10.17 14:39)
> Радикально разное внутреннее устройство.

Я про наружное. Стандартные блокировки должны работать логически одинаково? Если так настроил сиадмин, или принципиально таки разные подходы. Это я и сам, конечно, могу посмотреть, но смысл исходного поста я именно так понял - получим ошибку, если нет неких прав для выполнения некоего действия, которое не разруливается блокировками при открытии файла.

Видимо, я совсем не понимаю.


Inovet ©   (13.10.17 15:02[11]

> [10] Inovet ©   (13.10.17 14:59)
> при открытии файла

с определённым режимом доступа. Ещё и к разным кускам файла можно.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо