Mail Archives: cygwin/2001/11/15/16:27:22
On Thu, Nov 15, 2001 at 03:18:43AM +0100, Gerald Villemure wrote:
> switch (fork()) {
> case -1:
> return (-1);
> case 0:
> break;
> default:
> #ifdef HAVE_CYGWIN
> /*
> * This sleep avoids a race condition which kills the
> * child process if parent is started by a NT/W2K service.
> */
> sleep(1);
>
> /*
> * This is the code that I took from WinVNC
> * The best solution would be to enclose this in a IF Win9x
> clause
> * that is if I knew propers C syntax I could do this
> */
>
> // Obtain a handle to the kernel library
> HINSTANCE kerneldll = LoadLibrary("KERNEL32.DLL");
> if (kerneldll == NULL)
> break;
>
> // And find the RegisterServiceProcess function
> DWORD (*RegisterService)(DWORD, DWORD);
> RegisterService = (DWORD (*)(DWORD, DWORD))
> GetProcAddress(kerneldll,
> "RegisterServiceProcess");
> if (RegisterService == NULL)
> break;
>
> // Register this process with the OS as a service!
> RegisterService(NULL, 1);
>
>
> #endif
You added the code to the parent's branch. It's the child which
has to register as service. Move the code (not the sleep(!))
to the `case 0:' branch, right before the `break;'.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Developer mailto:cygwin AT cygwin DOT com
Red Hat, Inc.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -