WindowsにSystem.Posixのようなものがありますか?haskellでウィンドウ上の信号を処理する方法は?
以下のコードをウィンドウで実行したいのですが、変更する必要がありますか?例えば
import IO
import Control.Exception hiding (catch)
import Control.Concurrent
import Network
import System.Posix ---cannot be run on windows.
main = withSocketsDo (installHandler sigPIPE Ignore Nothing >> main')
--so the signal handler cannot be used
main' = listenOn (PortNumber 9900) >>= acceptConnections
acceptConnections sock = do
putStrLn "trying to accept" -- debug msg
[email protected](h,host,port) <- accept sock
print conn -- debug msg
forkIO $ catch (talk conn `finally` hClose h) (\e -> print e)
acceptConnections sock
talk [email protected](h,_,_) = hGetLine h >>= hPutStrLn h >> hFlush h >> talk conn
私はプログラムが時にCtrl + Cを終了したい場合は、Cの++で、このようないくつかのコードを書くので、私は、SIGINTのハンドラを追加する必要があります。
void callback(int sig)
{
// printf("catch\n");
}
...
signal(SIGINT,callback);
しかし、私はドンこれを行う方法を知っているのではなく、FFIを使うのですか?