
Am 06.04.2018 um 10:09 schrieb Peter Dedecker:
Summary question and TLDR: how do I reliably perform cleanup actions in a Windows console program that is closed by the user by clicking the 'X' symbol in the window title bar?
You need to intercept the various events that may cause a console windows to be closed; this is done via the Windows API call SetConsoleCtrlHandler . https://stackoverflow.com/a/30843219/6944068 gives an overview, API doc is at https://docs.microsoft.com/en-us/windows/console/setconsolectrlhandler (you want to register a HandlerRoutine). The default handler simply calls ExitProcess, bypassing all shutdown activity of the runtime. That's why C++ guys complain that destructors are not called. I don't know how to register a Haskell function as a Windows callback, that will have to be answered by somebody else. HTH Jo