2011-12-29 43 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

相关问题