[英]Checking if a process has terminated in C
我在尝试提出C函数时陷入困境。
基本上应该做的是:首先检查特定进程是否已终止。 如果有,它将终止过程的返回值递增到一个列表中。 如果尚未终止,则等待直到终止。
我已经阅读了手册(请耐心等待)并进行了有关该主题的研究,但是发现理解它非常令人困惑。
我有两个预先存在的列表:
我还有一个常量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.