in reply to Monitoring a process

If it's on Unix, and it's a critical service that needs to be restarted you could write a wrapper script that's basically an infinite loop in which the service is called. Something like:
while (1) { system "/path/to/service", @args; ... do something with $? ... }
But then, what if the wrapper crashes (or is killed)?

An alternative is to have init start the service, and have it respawn automatically. For instance, by putting the following line in /etc/inittab:

name:345:respawn:/path/to/service
Or to a wrapper script that starts the service, and mails the admin if the service fails (no loop needed in this wrapper script).

If the service is critical, and you're running Windows, good luck to you. I wouldn't run critical services on Windows. I guess one crash a month isn't too bad for Windows.