windows: Fix process termination code.
The ctrl-c hack used before didn't actually seem to work. No haskell libraries expose TerminateProcess. I tried just calling it via FFI, but got segfaults, probably to do with the wacky process handle not being managed correctly. Moving it all into one C function worked. This was hell. The EvilLinker hack was just final icing on the cake. We all know what the cake was made of.
This commit is contained in:
parent
84083ecdd3
commit
f11f7520b5
10 changed files with 58 additions and 24 deletions
|
@ -24,7 +24,7 @@ import qualified Data.Text as T
|
|||
#ifndef mingw32_HOST_OS
|
||||
import System.Posix (signalProcess, sigTERM)
|
||||
#else
|
||||
import System.Win32.Console (generateConsoleCtrlEvent, cTRL_C_EVENT)
|
||||
import Utility.WinProcess
|
||||
#endif
|
||||
|
||||
getShutdownR :: Handler Html
|
||||
|
@ -56,7 +56,7 @@ getShutdownConfirmedR = do
|
|||
#ifndef mingw32_HOST_OS
|
||||
signalProcess sigTERM =<< getPID
|
||||
#else
|
||||
generateConsoleCtrlEvent cTRL_C_EVENT =<< getPID
|
||||
terminatePID =<< getPID
|
||||
#endif
|
||||
redirect NotRunningR
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue