2013-05-16 18 views
14

私はFSNotifyパッケージを使用してファイルシステムを監視してマークダウンファイルを変更していますので、Pandocで自動的に実行できます。しかし、私はマネージャがうまく抜け出すのに困っています。現状ではHaskellでファイルシステムを監視する

は、私のコードは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。まあ、完全には完了していない - 私はこれでやりたいと思っていることはまだありますが、働いています。

答えて

22

「GHCiで動作し、コンパイル時にハングアップする」という形式の質問が表示されたときは、「スレッドランタイムが必要です」と思う。

-threadedで再コンパイルして、役立つかどうかを確認してください。

(GHCiのは、違いを説明している、このフラグを指定してコンパイルされています。私は...機能を使用すると、スレッド化ランタイムかを使用するかどうかに応じて作業を呼び出す方法外部でいくつかの違いがあります思い出してください)

+2

おかげで、のように働きました魅力 - 私がソースファイルを変更していないのでGHCが実行可能ファイルを再構築していないことが分かったら、コンパイラのフラグだけが表示されます。 –

関連する問題