diff options
author | Jan Kloetzke <[email protected]> | 2012-07-31 21:08:31 +0200 |
---|---|---|
committer | Jan Kloetzke <[email protected]> | 2012-07-31 21:21:49 +0200 |
commit | 03985084e42e262bac1b7c48a97c31db97348f1d (patch) | |
tree | 73ba2066f08aa478d48cc836e107ea7102329f9c /erts/doc | |
parent | 92eb89bd630e822cfc93a07dad7d6c7a25f45d63 (diff) | |
download | otp-03985084e42e262bac1b7c48a97c31db97348f1d.tar.gz otp-03985084e42e262bac1b7c48a97c31db97348f1d.tar.bz2 otp-03985084e42e262bac1b7c48a97c31db97348f1d.zip |
erlsrv: gracefully stop emulator on Windows shutdown
Windows will send the SERVICE_CONTROL_SHUTDOWN event to the service control
handler when shutting down the system. Instead of ignoring the event, erlsrv
will now invoke the stop action. Likewise, the Erlang emulator (and it's port
drivers) must not quit upon reception of the CTRL_SHUTDOWN_EVENT event in the
console control handler.
Diffstat (limited to 'erts/doc')
-rw-r--r-- | erts/doc/src/erlsrv.xml | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/erts/doc/src/erlsrv.xml b/erts/doc/src/erlsrv.xml index c1ecbc7b77..b2f34ed247 100644 --- a/erts/doc/src/erlsrv.xml +++ b/erts/doc/src/erlsrv.xml @@ -357,11 +357,12 @@ The environment of an Erlang machine started the console subsystem and programs running as window applications. An application which runs in the console subsystem (normal for port programs) uses the win32 function - <c><![CDATA[SetConsoleCtrlHandler]]></c> to a control handler that returns - TRUE in answer to the <c><![CDATA[CTRL_LOGOFF_EVENT]]></c>. Other - applications just forward <c><![CDATA[WM_ENDSESSION]]></c> and - <c><![CDATA[WM_QUERYENDSESSION]]></c> to the default window procedure. Here - is a brief example in C of how to set the console control + <c><![CDATA[SetConsoleCtrlHandler]]></c> to register a control handler + that returns TRUE in answer to the <c><![CDATA[CTRL_LOGOFF_EVENT]]></c> + and <c><![CDATA[CTRL_SHUTDOWN_EVENT]]></c> events. Other applications + just forward <c><![CDATA[WM_ENDSESSION]]></c> and + <c><![CDATA[WM_QUERYENDSESSION]]></c> to the default window procedure. + Here is a brief example in C of how to set the console control handler:</p> <code type="none"><![CDATA[ #include <windows.h> @@ -372,6 +373,8 @@ The environment of an Erlang machine started BOOL WINAPI service_aware_handler(DWORD ctrl){ if(ctrl == CTRL_LOGOFF_EVENT) return TRUE; + if(ctrl == CTRL_SHUTDOWN_EVENT) + return TRUE; return FALSE; } |