2011-12-29 24 views
1

按下Ctrl + C(或+ Z或其他) - 不會在Windows命令行(或電源外殼)中終止haskell應用程序(或happstack應用程序)。Ctrl + C在Windows中不起作用Haskell/happstack

目前我必須關閉窗口,然後打開一個新的命令行/ power-shell窗口,導航到應用程序位置並使用runhaskell重新啓動它。每當代碼更改時,是否有更簡單的方式讓應用「自動重新加載」?

或者我做錯了什麼?

+0

我猜在這裏,但不按Ctrl-C產生異常,默認情況下是通過關閉應用程序處理?如果是這樣,它只會是讀取Happstack啓動服務器的IO操作的處理程序。還有Happstack.Server.SimpleHttp.waitForTermination :: IO()。 – 2011-12-30 01:18:03

+0

對不起,我對hapstack完全陌生 - 你能否提供一個更詳細的例子?你也可以發佈它作爲答案(所以我可以接受它,如果適用)? – drozzy 2011-12-30 08:28:29

回答

2

一般來說,Ctrl-C和Windows有一些問題。我不清楚細節。也許有人使用Windows可以提供更好的解決方案。

最簡單的事情是,直到接收到終止信號使用forkIOwaitForTermination

do tid <- forkIO $ simpleHTTP nullConf yourApp 
    waitForTermination 
    killThread tid 

waitForTermination只有幾個街區。在unix平臺上,即^ C。在窗口下是字母'e'(用於退出)。根據緩衝區的不同,您可能需要按return鍵。

在Linux下,你可以使用happstack-插件/插件,自動自動進行重新編譯,每當源文件保存重裝變化到正在運行的服務器。但是,plugins-auto目前不支持Windows,因爲它依賴於linux特有的inotify庫。目前正在進行一些工作來推廣inotify支持,以便在可用時使用它,並在windows下使用輪詢解決方案。

要查看插件,自動的舊演示退房:

http://happstack.blogspot.com/2010/10/recompile-your-haskell-based-templates.html

相關問題