Updated nssm.dsp with missing dependencies.
[nssm.git] / README.txt
index b772c36..3559245 100644 (file)
@@ -77,6 +77,9 @@ with the given options (if you specified any).
 \r
 Don't forget to enclose paths in "quotes" if they contain spaces!\r
 \r
+If you want to include quotes in the options you will need to """quote""" the\r
+quotes.\r
+\r
 \r
 Managing the service\r
 --------------------\r
@@ -137,6 +140,49 @@ request to suicide if you explicitly configure a registry key for exit code 0.
 If only the default action is set to Suicide NSSM will instead exit gracefully.\r
 \r
 \r
+Stopping the service\r
+--------------------\r
+When stopping a service NSSM will attempt several different methods of killing\r
+the monitored application, each of which can be disabled if necessary.\r
+\r
+First NSSM will attempt to generate a Control-C event and send it to the\r
+application's console.  Batch scripts or console applications may intercept\r
+the event and shut themselves down gracefully.  GUI applications do not have\r
+consoles and will not respond to this method.\r
+\r
+Secondly NSSM will enumerate all windows created by the application and send\r
+them a WM_CLOSE message, requesting a graceful exit.\r
+\r
+Thirdly NSSM will enumerate all threads created by the application and send\r
+them a WM_QUIT message, requesting a graceful exit.  Not all applications'\r
+threads have message queues; those which do not will not respond to this\r
+method.\r
+\r
+Finally NSSM will call TerminateProcess() to request that the operating\r
+system forcibly terminate the application.  TerminateProcess() cannot be\r
+trapped or ignored, so in most circumstances the application will be killed.\r
+However, there is no guarantee that it will have a chance to perform any\r
+tidyup operations before it exits.\r
+\r
+Any or all of the methods above may be disabled.  NSSM will look for the\r
+HKLM\SYSTEM\CurrentControlSet\Services\<service>\Parameters\AppStopMethodSkip\r
+registry value which should be of type REG_DWORD set to a bit field describing\r
+which methods should not be applied.\r
+\r
+  If AppStopMethodSkip includes 1, Control-C events will not be generated.\r
+  If AppStopMethodSkip includes 2, WM_CLOSE messages will not be posted.\r
+  If AppStopMethodSkip includes 4, WM_QUIT messages will not be posted.\r
+  If AppStopMethodSkip includes 8, TerminateProcess() will not be called.\r
+\r
+If, for example, you knew that an application did not respond to Control-C\r
+events and did not have a thread message queue, you could set AppStopMethodSkip\r
+to 5 and NSSM would not attempt to use those methods to stop the application.\r
+\r
+Take great care when including 8 in the value of AppStopMethodSkip.  If NSSM\r
+does not call TerminateProcess() it is possible that the application will not\r
+exit when the service stops.\r
+\r
+\r
 I/O redirection\r
 ---------------\r
 NSSM can redirect the managed application's I/O to any path capable of being\r
@@ -235,6 +281,7 @@ the default language when the user's display language was not translated.
 Thanks to Riccardo Gusmeroli for Italian translation.\r
 Thanks to Eric Cheldelin for the inspiration to generate a Control-C event\r
 on shutdown.\r
+Thanks to Brian Baxter for suggesting how to escape quotes from the command prompt.\r
 \r
 Licence\r
 -------\r