metaclass: (Default)
[personal profile] metaclass
Пытался написать прогу на хаскеле, которая читает файл, обрабатывает его и дописывает в его конец новую строку. Тут же напоролся на lazy i/o и то, что после hClose файл уже не читается, а до hClose файл нельзя открыть на запись. C readFile аналогично.

Кстате, что-то я в System.IO совсем не вижу вариаций openFile с ShareRead/ShareWrite, оно что ле вообще не предусмотрено?

Date: 2009-12-06 11:20 am (UTC)
From: [identity profile] permea-kra.livejournal.com
ЭЭэ... Ребе, а вам точно надо писать в тот же самый файл? По хорошему, надо бы в соседний, а потом мувнуть.

System.Posix.IO ?

Date: 2009-12-06 11:44 am (UTC)
From: [identity profile] metaclass.livejournal.com
Зависит от размера файла. Если это мелкий файл с текущим состоянием - то да, так и надо делать.
А вот если это лог изменения состояния начиная с времен царя гороха - то таки нужно дописывать в конец.

Date: 2009-12-06 11:49 am (UTC)
From: [identity profile] lionet.livejournal.com
Ну так открывай два файловых дескриптора. Один на чтение файла, а другой на запись.

Что, Windows этого не умеет?

Date: 2009-12-06 11:55 am (UTC)
From: [identity profile] metaclass.livejournal.com
Windows умеет, а вот Хаскель на ней - похоже нет:
http://hpaste.org/fastcgi/hpaste.fcgi/view?id=13672#a13672

check.exe: test: openFile: permission denied (Permission denied)

Date: 2009-12-06 12:24 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Кстати, System.Posix.IO - это где, в виндовом ghc его нету.

Date: 2009-12-06 12:36 pm (UTC)
From: [identity profile] permea-kra.livejournal.com
unix package. В винде можно взять winio package, наверно...

По записи - в таком случае, по идее, таки ручками делать IO. В смысле, совсем ручками, через свой буфер. Или ковырять хакадж, там с высокой вероятностью что-то есть.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 7th, 2025 08:35 pm
Powered by Dreamwidth Studios