X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=service.cpp;h=e8a1569c7d75bc7514fb35269954f25fd0488500;hb=c03d51cbbfe9f4f8a28dbabbfc068573a1842b74;hp=ee60c1072fa7f0cd36712db4489f9bf09f9270ed;hpb=eac4d7eedfe338703f0103aac01af2ca306f615a;p=nssm.git diff --git a/service.cpp b/service.cpp index ee60c10..e8a1569 100644 --- a/service.cpp +++ b/service.cpp @@ -1530,7 +1530,6 @@ int start_service(nssm_service_t *service) { bool inherit_handles = false; if (si.dwFlags & STARTF_USESTDHANDLES) inherit_handles = true; unsigned long flags = service->priority & priority_mask(); - if (service->stdin_pipe) flags |= DETACHED_PROCESS; if (service->affinity) flags |= CREATE_SUSPENDED; if (! CreateProcess(0, cmd, 0, 0, inherit_handles, flags, 0, service->dir, &si, &pi)) { unsigned long exitcode = 3; @@ -1620,10 +1619,6 @@ int stop_service(nssm_service_t *service, unsigned long exitcode, bool graceful, UnregisterWait(service->wait_handle); service->wait_handle = 0; } - if (service->stdin_pipe) { - CloseHandle(service->stdin_pipe); - service->stdin_pipe = 0; - } service->rotate_stdout_online = service->rotate_stderr_online = NSSM_ROTATE_OFFLINE; @@ -1702,6 +1697,8 @@ void CALLBACK end_service(void *arg, unsigned char why) { if (service->pid) kill_process_tree(service, service->pid, exitcode, service->pid); service->pid = 0; + if (! service->no_console) FreeConsole(); + /* The why argument is true if our wait timed out or false otherwise. Our wait is infinite so why will never be true when called by the system.