Вопросы и ответы

Можно ли сохранять структуры данных, описанные на 13-м занятии, “Структуры и ссылки”, в DBM-файле или текстом файле?


Если ответить с ходу, то нет, хотя в принципе это возможно, но довольно сложно. Для начала нужно преобразовать “структуру” в строку, которая будет представлять данные и саму структуру, их содержащую. После этого полученную строку нужно использовать как значение ключа в хэше, связанном с DBM-файлом. В Perl предусмотрен специальный модуль, который все это делает автоматически. Его имя — Data::Dumper.


Как можно заблокировать DBM-файл?


DBM-файлы блокируются с помощью системы семафоров, которая была описана на этом занятии. Вам нужно использовать функции get _lock{) и release lock(), описанные в листинге 15.3. Поместите эти функции перед открытием DBM-фаила и после его закрытия, как показано в следующем примере:



Можно каким-нибудь образом проверить, приведет ли вызов функции flock к паузе в работе программы без реальной приостановки выполнения программы?


Да, это возможно. У функции flock предусмотрено специальное значение параметра, использование которого не приводит к приостановке выполнения программы. Такой вызов функции flock называется неблокирующим. Чтобы проверить, вызовет ли функция flock приостановку в выполнении программы, поместите значение | LOCK_NB после типа блокировки, как показано ниже,



Более того, вы даже можете перевести программу на некоторое время в состояние ожидания, а затем вывести соответствующее сообщение, если в конечном итоге не удастся выполнить блокировку через заданное число попыток. Вот пример:


Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: