我正在使用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。好吧,还没有完全完成 - 还有更多我想做的事 - 但工作。
答案 0 :(得分:24)
每当我看到“在GHCi中工作,在编译时挂起”的问题,我认为“你需要线程运行时”。
尝试使用-threaded
重新编译,看看是否有帮助。
(GHCi是用这个标志编译的,它解释了它的区别。我记得外部函数调用的工作方式有所不同,这取决于你是否使用线程运行时...)