15

我正在使用FSNotify包来监视我的文件系统对降价文件的更改,因此我可以通过Pandoc自动运行它们。但是,我无法让经理顺利退出。

就目前而言,我的代码基于Yesod 使用相同的包

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 位上编译这个。

编辑:完成的代码。好吧,还没有完全完成——我还想做更多的事情——但正在工作。

4

1 回答 1

24

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

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

(GHCi 是用这个标志编译的,这解释了差异。我记得外部函数调用的工作方式存在一些差异,具体取决于您是否使用线程运行时......)

于 2013-05-16T07:48:46.950 回答