Skip to contentSkip to conversation

Running status of a process

DISCUSSION Prasanta Sadhukhan 2 participants 4 messages Mar 21, 2007

lore
Share & tools
lore
#0 lore raw

Hi,

Can anyone point as to how can I obtain the information whether a non-child process is still running?

I tried waitpid(pid, &status, WNOHANG) but always receive return value as -1 with errno as ECHILD.
Since the processes I am waiting for is not the child of this process from where I am calling waitpid() (ie, they are independant processes), it might be a valid error but what is the other alternative?

Regards
Prasanta

#1 lore raw

Prasanta,

Quoted 4 lines · Prasanta Sadhukhan

Hi,

Can anyone point as to how can I obtain the information whether a non-child process is still running?

If you know the PID of the process you want to obtain the status of use the kill(2) system call. The second argument should be 0 (zero) to prevent a signal from being sent to the process. If the process exists kill(2) returns zero, or -1 otherwise.

kill(2) can indicate various errors, but an error or EPERM usually is an indicator that the process exists, while all others indicate that it does not.

If you're writing for systems supporting the /proc filesystem, checking for existence of /proc/{pid} is an alternative.

If you don't know the PID you're out of luck, unless you make use of the /proc filesystem again, which is not portable per se.

\Steve

--

Steve Grägert <[email protected]>
Jabber xmpp://[email protected]
Internet http://eth0.graegert.com, http://blog.graegert.com
-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#2 lore raw
Quoted 19 lines · Steve Graegert

Prasanta,

Quoted 4 lines · Prasanta Sadhukhan

Hi,

Can anyone point as to how can I obtain the information whether a non-child process is still running?

If you know the PID of the process you want to obtain the status of use the kill(2) system call. The second argument should be 0 (zero) to prevent a signal from being sent to the process. If the process exists kill(2) returns zero, or -1 otherwise.

kill(2) can indicate various errors, but an error or EPERM usually is an indicator that the process exists, while all others indicate that it does not.

Quoted 5 lines

If you're writing for systems supporting the /proc filesystem, checking for existence of /proc/{pid} is an alternative.

If you don't know the PID you're out of luck, unless you make use of the /proc filesystem again, which is not portable per se.

thanks steve, found the solution.. I guess my mail crossed yours in the path

Prasanta

Quoted 9 lines

\Steve

Signature · 4 lines
Steve Grägert <[email protected]>
Jabber    xmpp://[email protected]
Internet  http://eth0.graegert.com, http://blog.graegert.co
m

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#3 lore raw
In reply to Prasanta Sadhukhan
Quoted 9 lines · Prasanta Sadhukhan

Hi,

Can anyone point as to how can I obtain the information whether a non-child process is still running?

I tried waitpid(pid, &status, WNOHANG) but always receive return value as -1 with errno as ECHILD.
Since the processes I am waiting for is not the child of this process from where I am calling waitpid() (ie, they are independant processes), it might be a valid error but what is the other alternative?

Regards
Prasanta

Got it...Should have called kill(pid, 0)
Thanks anyways

Quoted 5 lines

-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html