Просто проверьте статус процесса в c - PullRequest
3 голосов
/ 17 ноября 2010

Я хочу знать статус процесса. Я думаю, что могу использовать функции семейства ожидания, но на самом деле я не хочу ждать процесса, просто проверь статус и продолжай.

Я бы хотел что-то вроде

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

Ответы [ 3 ]

11 голосов
/ 17 ноября 2010

Затем вы хотите использовать функцию waitpid с опцией WNOHANG:

#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 */
}
3 голосов
/ 17 ноября 2010

Я думаю, что вы хотите waitpid с WNOHANG.

waitpid(pid, &status, WNOHANG);
1 голос
/ 14 марта 2014

Убейте его сигналом 0 и проверьте возвращаемое значение.

...