在Haskell中,waitForProcess在Windows';命令提示符
我尝试在Windows的cmd.exe中运行以下Haskell程序,在执行waitForProcess时,按ctrl-c并不会终止该程序。但如果在MinGW shell下运行,它会工作。有什么想法吗? (注意:Windows没有“睡眠”命令,我只是自己写了一个。)在Haskell中,waitForProcess在Windows';命令提示符,windows,haskell,interrupt-handling,Windows,Haskell,Interrupt Handling,我尝试在Windows的cmd.exe中运行以下Haskell程序,在执行waitForProcess时,按ctrl-c并不会终止该程序。但如果在MinGW shell下运行,它会工作。有什么想法吗? (注意:Windows没有“睡眠”命令,我只是自己写了一个。) {-#语言重载字符串} 导入系统。进程 主要∷ IO() main=do putStrLn“睡眠” (,,,,pHandle)系统sheduller在等待内核对象的事件时没有时间处理线程。 解决方案是从另一个线程调用waitForPr
{-#语言重载字符串}
导入系统。进程
主要∷ IO()
main=do
putStrLn“睡眠”
(,,,,pHandle)系统sheduller在等待内核对象的事件时没有时间处理线程。
解决方案是从另一个线程调用waitForProcess,与主线程不同。这似乎是mingw和cygwin如何处理控制台的问题:
cmd.exe的睡眠工作正常运行以上代码为我!Ctrl+C也终止了!常见任务的更简单的函数记录在。如果使用线程化的构建会发生什么?同样的行为,我应该在前面提到过。
{-# 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"
module Main where
import System.Process
main = do callCommand "sleep 5"
putStrLn "all done"