2

Windows の cmd.exe で次の Haskell プログラムを実行しようとしましたが、waitForProcess の実行中に ctrl-c を押してもプログラムが強制終了されません。ただし、MinGW シェルで実行している場合は機能します。何か案は?(注:Windowsには「スリープ」コマンドが付属していません。私は自分で書いただけです。)

{-# Language OverloadedStrings #-}
import System.Process

main ∷ IO ()
main = do
  putStrLn "sleeping"
  (_, _, _, pHandle) <-
    createProcess CreateProcess { 
          cmdspec = RawCommand "sleep" ["5"]
        , cwd = Nothing
        , env = Nothing
        , std_in = CreatePipe, std_out = CreatePipe, std_err = CreatePipe
        , close_fds = False
        , create_group = False
        } 
  waitForProcess pHandle
  putStrLn "all done"
4

3 に答える 3

1

これは、mingw と cygwin がコンソールを処理する方法に問題があるようです。

http://www.mail-archive.com/cygwin@cygwin.com/msg104921.html http://comments.gmane.org/gmane.os.cygwin/135374

于 2013-02-18T23:55:52.757 に答える
0

システム シェデュラーは、カーネルのオブジェクトのイベントを待機している間、スレッドの時間を確保できません。
解決策は、メインとは異なる別のスレッドから waitForProcess を呼び出すことです。

于 2013-01-02T08:37:26.627 に答える