检查进程是否已在C中终止

时间:2015-03-22 16:13:41

标签: c linux wait

我试图在C中找到一个函数。

基本上它应该做的是:它首先检查特定进程是否已经终止。如果有,则将已终止进程的返回值增加到列表中。如果它没有终止,它会一直等到它。

我已阅读手册(等待人员)并对该主题进行了研究,但发现理解这一点非常困惑。

我有两个预先存在的列表:

  • child_pids,包含所有子进程的pid。
  • child_return_values,这是应该递增返回值的列表。

我还有一个常量child_pids_size,它是列表child_pids的大小。

这是我到目前为止所做的:

void wait_process(){

    int i, child_state, value;
    pid_t child_pid, rc_pid;

    for(i = 0; i < child_pids_size; i++){

    child_pid = child_pids[i];

    rc_pid = waitpid(child_pid,&child_state,0);

    if(rc_pid > 0){

        //if the process terminated
        if (WIFEXITED(child_state)){


        //it increments the position of the process
        // in the list with the returned value of waitpid
        value = child_return_values[i];
        value = value + rc_pid;
        child_return_values[i] = value;

        }

        else{
        perror("An error occurred!");
        exit(1);

        }

    }


}


}

1 个答案:

答案 0 :(得分:2)

我想&#34;已终止进程的返回值&#34;指的是子进程的退出值(即调用exit()时进程使用的值)。

要获得它,您可以使用child_state作为参数使用WEXITSTATUS()宏。

相关问题