process ids

Michael I. Bushnell mike at sleepy.unm.edu
Fri Sep 2 16:43:08 AEST 1988


In article <171 at ispi.UUCP> jbayer at ispi.UUCP (id for use with uunet/usenet) writes:
>
>	I have a need to be able to identify the parent of a process
>which is executing on the system.  The program which will be doing the
>identification will not be either the owner, or even the same user. 
>However, it will have root privilages.  The idea is to be able to kill
>an entire process group with one kill().  I know it's available
>somewhere since ps is able to display it.  
>
>	I have found an include file	<sys/proc.h>	which apparently
>is used by the system to keep track of this.  I can find no reference to
>it in any manual I have looked in.

If you want to kill a process group, then kill with a negative argument will
do that.  If you just want the parent for another reason (to kill an
entire process hierarchy, or whatever), then do the following:

Using nlist(3), find the symbol _proc and _nproc in /vmunix.  Read 
from /dev/kmem a longword from _proc and _nproc.  _proc contains the
address of the process table and _nproc contains the size.  Then read
the process table (it is sizeof(struct proc) * nproc) in size...

Search one by one.  Check each record to see if it is a real process
(p_stat != 0).  Then, check if it is the process you want and then
look at its parent.
-- 
                N u m q u a m   G l o r i a   D e o 

			Michael I. Bushnell
			HASA - "A" division
			mike at turing.unm.edu
	    {ucbvax,gatech}!unmvax!turing.unm.edu!mike



More information about the Comp.unix.wizards mailing list