Search code examples
cprocessforkwait

Just check status process in c


I want to know the status of a process. I think I can use the wait family functions but actually I don't want to wait for the process, just check the status and go on.

I would want something like

checkStatusOfProcess(&status);
if(status == WORKING) {
    //do something
} else if(status == exited) {
    //do something else
} else \\I dont care about other states

Solution

  • Then you want to use the waitpid function with the WNOHANG option:

    #include <sys/types.h>
    #include <sys/wait.h>
    
    int status;
    pid_t return_pid = waitpid(process_id, &status, WNOHANG); /* WNOHANG def'd in wait.h */
    if (return_pid == -1) {
        /* error */
    } else if (return_pid == 0) {
        /* child is still running */
    } else if (return_pid == process_id) {
        /* child is finished. exit status in   status */
    }