我正在处理Haskell(发布/订阅+存储)中文件支持的队列。
我的想法是拥有一个带有W + R + R + R句柄的日志文件:
但是,在同一文件中打开两个句柄(R + W)不适用于GHC:
#!/usr/bin/env stack
-- stack --resolver lts-13.0 --install-ghc runghc
module Main where
import System.IO
main :: IO ()
main = do
let path = "file.txt"
_ <- openFile path WriteMode
_ <- openFile path ReadMode -- throws *** Exception: file.txt: openFile: resource busy (file is locked)
_ <- openFile path ReadMode
_ <- openFile path ReadMode
return ()
File locking部分开始承诺:
实施应尽可能在本地实施, Haskell进程,文件的多读取器单写程序锁定。
...但是然后说:
也就是说,同一文件上可能有多个句柄, 管理输入,或仅管理输出文件的一个句柄。
问题: