LINUX.ORG.RU

Несколько чтений одного и того же файла

 


1

2

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

Вот я попробовал сейчас из линукса вот такое сделать:

CL-USER> (let ((file #P"file.txt"))
                (with-open-file (*standard-input* file)
                  (with-open-file (in file)
                    (read-char *standard-input*)
                    (read-char in)
                    nil)))
NIL
CL-USER> 

и вроде никаких проблем.

Я помню винду с её жуткими придирками по поводу занятости файлов работами в приложениях и есть вопрос: а насколько будут такие фокусы кросплатформенны?

★★★★★

Вот я попробовал сейчас из линукса вот такое сделать:

[skip]

и вроде никаких проблем.

Вот я попробовал сейчас из под вин7 вот такое же сделать и вроде никаких проблем.

Чё спросить-то хотел?

anonymous
()

Я помню винду с её жуткими придирками по поводу занятости файлов

У неё нет никаких придирок - с каким флагом откроешь FILE_SHARE_READ/WRITE/NONE так и будет.

cnupm
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.