繁体   English   中英

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

[英]Checking if a process has terminated in C

我在尝试提出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);

        }

    }


}


}

我想“终止的进程的返回值”是指子进程的退出值(即该进程在调用exit()时使用的值)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM