检查进程是否已在C中终止
我在尝试用C语言编写函数时遇到了麻烦 基本上,它应该做的是:它首先检查特定进程是否已终止。如果有,则将终止进程的返回值递增到列表中。如果它还没有终止,它会一直等到终止 我已经阅读了手册(等等)并对这一主题进行了研究,但发现理解这一点非常混乱 我有两个预先存在的列表:检查进程是否已在C中终止,c,linux,wait,C,Linux,Wait,我在尝试用C语言编写函数时遇到了麻烦 基本上,它应该做的是:它首先检查特定进程是否已终止。如果有,则将终止进程的返回值递增到列表中。如果它还没有终止,它会一直等到终止 我已经阅读了手册(等等)并对这一主题进行了研究,但发现理解这一点非常混乱 我有两个预先存在的列表: 包含所有子进程pid的子进程pid child_return_values,返回值应递增的列表 我还有一个常量child_pids_size,它是列表child_pids的大小 以下是我迄今为止所做的工作: void wait_
- 包含所有子进程pid的子进程pid
- child_return_values,返回值应递增的列表
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);
}
}
}
}
void wait_进程(){
int i,子状态,值;
pid_t child_pid,rc_pid;
对于(i=0;i0){
//如果进程终止
如果(妻子退出(子女国)){
//它增加了进程的位置
//在返回值为waitpid的列表中
value=child_return_value[i];
值=值+rc_pid;
子_返回_值[i]=值;
}
否则{
perror(“发生错误!”);
出口(1);
}
}
}
}
我假设“已终止进程的返回值”是指子进程的退出值(即调用exit()时进程使用的值)
要获得它,可以使用WEXITSTATUS()宏,使用child_state作为参数。是的,完全正确。谢谢