使用Haskell监视文件系统

时间:2013-05-16 07:01:02

标签: haskell filesystems

我正在使用FSNotify程序包来查看我的文件系统以更改markdown文件,因此我可以自动通过Pandoc运行它们。但是,我很难让经理退出。

目前,我的代码基于Yesod's use of the same package

module Main where

import System.FSNotify
import Filesystem (getWorkingDirectory)
import System.Exit
import Control.Concurrent

main = do
    cwd <- getWorkingDirectory
    putStrLn "Watching current directory, press RETURN to exit."
    withManager $ \man -> do
        _ <- forkIO $ do
            watchTree man cwd (const True) $ \fp -> print fp
        _ <- getLine
        exitSuccess

当我使用runhaskell时,程序运行正常,但如果我将其编译为可执行文件(使用ghc --make),当我按回车键时,我的终端无法响应。我正在Windows 7 64位上编译它。

编辑:Completed code。好吧,还没有完全完成 - 还有更多我想做的事 - 但工作。

1 个答案:

答案 0 :(得分:24)

每当我看到“在GHCi中工作,在编译时挂起”的问题,我认为“你需要线程运行时”。

尝试使用-threaded重新编译,看看是否有帮助。

(GHCi是用这个标志编译的,它解释了它的区别。我记得外部函数调用的工作方式有所不同,这取决于你是否使用线程运行时...)