只需检查c中的状态进程

只需检查c中的状态进程,c,process,fork,wait,C,Process,Fork,Wait,我想知道进程的状态。我想我可以使用wait系列函数,但实际上我不想等待进程,只需检查状态并继续 我想要像这样的东西 checkStatusOfProcess(&status); if(status == WORKING) { //do something } else if(status == exited) { //do something else } else \\I dont care about other states 我想你需要的是WNOHANG wait

我想知道进程的状态。我想我可以使用wait系列函数,但实际上我不想等待进程,只需检查状态并继续

我想要像这样的东西

checkStatusOfProcess(&status);
if(status == WORKING) {
    //do something
} else if(status == exited) {
    //do something else
} else \\I dont care about other states
我想你需要的是
WNOHANG

waitpid(pid, &status, WNOHANG);

然后,您需要将
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 */
}
#包括
#包括
智力状态;
pid_t return_pid=waitpid(进程id和状态,WNOHANG);/*WNOHANG在等待,h*/
如果(返回\u pid==-1){
/*错误*/
}else if(返回_pid==0){
/*孩子还在跑*/
}else if(返回\u pid==进程\u id){
/*子项已完成。退出状态为“状态”*/
}

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

这将继续执行吗?如果我们感兴趣的进程已完成,并且系统启动另一个具有相同进程id的进程怎么办?我们如何区分这两个过程?