Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!uflorida!haven!ncifcrf!nlm-mcs!adm!news From: TAYBENGH%NUSDISCS.BITNET@cunyvm.cuny.edu Newsgroups: comp.unix.questions Subject: RE: Correct copy of the summary of checking the status of process u... Message-ID: <23451@adm.BRL.MIL> Date: 26 May 90 21:52:00 GMT Sender: news@adm.BRL.MIL Lines: 48 Sorry for posted a wrong file earlier! Hi! Netlander, Sorry to return to all of u lately. First I have to thank all of u who replied/helped. Thank U! Here is the summary of the replies regarding detection of process status. Basically, I am designing a super-server to create/monitor/destroy server processes. My main objective of monitoring the status of server processes is detect crash of any server process. Here, I will refer polled process as server, the process monitoring the status of the server processes as manager. 1) Using kill(): This is the most popular way (judged from the number of replies). However, I did not adopt this technique because of the problem that the effective user ID of the server must be the same as the manager , which is quite impossible to impose in my server manager design. Moreover, kill() may not work when the server process crashes and its process ID is re-assigned to other process. 2) Search the kernel process table (/dev/kmem): This approach is too OS specific. Portability will be a big problem even between different Unix OS. 3) Purposely bind a socket to the server port: If the binding succeeds, then the server is dead since port cannot be re-used; otherwise if the binding fails and returns an error telling port in used, then the server is alive. However, this approach faced the similar problem as technique 1 if the port is re-used by other process after server crashes and before we bind the socket. 4) Using "ps" command and pipe it to file: Personaly I think this is the best and easiest solution. "ps" provides comprehensive information such as execution filename, process ID, process state of a process. In addition, almost every system has similar command. The shortcomings are: overhead in using system() and re-directing output from "ps" to file; slow file I/O operation (read). "grep" can be used to filter out unnecessary processes information. I am quite surprisied that nobody suggested this way. This is probably due to ambiguity in my question asked. Any comments are welcomed. - Beng Hang Tay (email: taybengh@nusdiscs) Dept. of Info. Sys. and Comp. Sc. National University of Singapore