Running status of a process
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
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
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
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 callingwaitpid()(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