How to tell if a process is active?

Mike Hoffman mhoffman at infocenter.UUCP
Thu Jun 15 06:53:55 AEST 1989


I have an application in which I need to check to see if a process
is currently active. The only method I have been able to devise
is the "#" option of "ps", as in  "ps #1234" which will print out
a header, then the information on process 1234:

% ps #1234
  PID TT   STAT  TIME COMMAND
 1234 117  IW    0:00  foo bar baz

If process 1234 is not active, I get just the first line (the
column headers), and there is nothing else.

What I do, more or less, is: 

isactive(pid)
	open pipe
	fork
	if (child)
		redirect stdout to pipe
        	execl ("bin/ps","ps","#pid",0)
	else
		read(pipe,sizeof(header line))
		if (anything else to read)
			return(process is active)
		else
			return(process is not active)

This seems terribly clumsy, and I'm sure there is a better way :-(

It works, and seems dependable so far, but it seems to me that
if "ps #1234" can do it, then I should be able to do it as well.

Any help or suggestions will be appreciated. I hope this won't
generate as many answers as "what does g/re/p mean?", but send
answers e-mail, if possible - I'll summarize if volume warrants
it.

				m/ik/e
----
UUCP: {uunet,codas!novavax,sun,pur-ee}!gould!mhoffman  
                                  
Michael J. Hoffman                 "My opinions cannot be confused
Manufacturing Engineering           with those of my employer, as
Encore Computer Corporation         I don't even know what those
                                    opinions might be."



More information about the Comp.unix.questions mailing list