只需检查c中的状态过程

时间:2010-11-17 00:12:01

标签: c process fork wait

我想知道流程的状态。我想我可以使用等待系列功能但实际上我不想等待该过程,只需检查状态并继续。

我想要像

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

3 个答案:

答案 0 :(得分:11)

然后,您希望将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 */
}

答案 1 :(得分:3)

我认为您希望waitpidWNOHANG

waitpid(pid, &status, WNOHANG);

答案 2 :(得分:1)

用信号0杀死它并检查返回值。