2011-12-29 3 views
1

Ctrl + C(または+ Zなど)を押すと、Windowsのコマンドライン(またはパワーシェル)でhaskellアプリケーション(またはhappstackアプリ)を終了しません。Windows Haskell/happstackでCtrl + Cが機能しない

現在、私はウィンドウを閉じて新しいコマンドライン/パワーシェルウィンドウを開いて、アプリケーションの場所に移動し、runhaskellで再度起動する必要があります。コードが変更されるたびにアプリを「自動再読み込み」させる簡単な方法はありますか?

または何か間違っていますか?

+0

私はここで推測しているが、Ctrl-Cをデフォルトでアプリを閉じて処理されるという例外を発生しないのですか?もしそうなら、それはサーバを起動するHappstackのIOアクションの周りのそのようなハンドラを読むことの問題に過ぎないでしょう。 Happstack.Server.SimpleHttp.waitForTermination :: IO()もあります。 –

+0

申し訳ありませんが、私は完全にhapstackの新機能です - もっと詳細な例を提供できますか?また、回答として投稿することもできます(該当する場合は受け入れることができます)。 – drozzy

答えて

2

Ctrl + Cと一般的なウィンドウに問題があります。私は詳細については本当に明確ではない。たぶん、窓を使用する人は、より良い解決策を考え出すことができます。行うには

最も簡単な方法は、それが終了信号を受信するまでforkIOwaitForTermination

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

waitForTerminationだけブロックを使用することです。 Unixプラットフォームでは、それは^ Cです。窓の下では、文字「e」(終了のため)です。バッファリングに応じて、returnキーを押す必要があります。

Linuxでは、happstack-plugins/plugins-autoを使用すると、ソースファイルが保存されるたびに実行中のサーバーに変更を自動的に再コンパイルして再ロードできます。しかし、プラグインオートは現在、Windows特有のinotifyライブラリに依存しているため、Windowsをサポートしていません。 inotifyサポートを一般化して、利用可能なときに使用できるようにするいくつかの作業が進行中であり、Windowsの下でポーリングソリューションを使用します。チェックアウトのプラグイン・オートの古いデモを表示するには

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

関連する問題