I am designing a monitor process. The job of the monitor process is to monitor a few set of configured processes. When the monitor process detects that a process has gone down, it needs to restart the process.
I am developing the code for my linux system. Here is how I developed a small prototype
- Fed the details(path, arguments) about the various processes that need to be monitored. - The monitor process did the following:
1. Installed a signal handler for SIGCHLD
2. A fork and execv to start the process to be monitored. Store the pid of the child processes.
3. When a child went down, the parent recevies a SIGCHLD
4. The signal handler will now be called. The handler will run a for loop on the list of pids stored earlier. For each pid, it will check the /proc filesystem for existence of a directory corresponding to the pid. If the directory doesn't exist, the process is restarted.
Now, my question is this
- Is the above method (to check the /proc filesystem) a standard or recommended mechanism of checking if a process is running or should I do something like creating a pipe for the ps command and looping through the output of ps ?
- Is there a better way of achieving my requirement?
Regards.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…