Ctrl + C не работает в Windows Haskell / happstack - PullRequest
2 голосов
/ 30 декабря 2011

Нажатие Ctrl + C (или + Z или что-либо еще) - не завершает приложение haskell (или happstack app) в командной строке Windows (или в командной оболочке).

В настоящее времяМне нужно закрыть окно, а затем открыть новое окно командной строки / power-shell, перейти к местоположению приложения и запустить его снова с runhaskell .Есть ли более простой способ заставить приложение автоматически перезагружаться при изменении кода?

Или я что-то не так делаю?

1 Ответ

2 голосов
/ 05 января 2012

Существует некоторая проблема с Ctrl-C и окнами в целом. Я не очень ясно, на деталях. Возможно, кто-то, кто использует Windows, может найти лучшее решение.

Самое простое, что нужно сделать, это использовать forkIO и waitForTermination

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

waitForTermination просто блокирует, пока не получит сигнал завершения. На платформах Unix это ^ C. Под окнами это буква «е» (для выхода). Возможно, вам придется нажать клавишу return в зависимости от буферизации.

В linux вы можете использовать happstack-plugins / plugins-auto для автоматической перекомпиляции и перезагрузки изменений на работающем сервере при сохранении исходных файлов. Тем не менее, plugins-auto в настоящее время не поддерживает Windows, поскольку использует библиотеку inotify, специфичную для Linux. В настоящее время проводится некоторая работа по обобщению поддержки inotify, чтобы ее можно было использовать, когда она была доступна, и использовать решение для опроса под окнами.

Чтобы увидеть более старую демоверсию плагинов, проверьте автоматически:

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

...