我想在子进程退出/终止时进行一些计算。为了从进程组ID等于父进程组ID的子进程中获取终止信号,我正在使用waitpid()
。
我在这里使用的waitpid
参数是:
pid = 0
,表示等待任何进程组ID与调用进程的ID相等的子进程。
Status = status
来获取状态。
Options = 0
。
这是我的cpp代码部分:
while(1) {
pid = waitpid(0, &status, 0);
std::cout << "pid: " << pid << " status value: " << status << “ WIFEXITED : ” << WIFEXITED(status) << “ WEXITSTATUS: “ << WEXITSTATUS(status) << std::endl;
doCalculation();
}
当我尝试运行它时,得到以下结果:
pid: -1 status value: 32767 WIFEXITED : 0 WEXITSTATUS: 127
pid: -1 status value: 32767 WIFEXITED : 0 WEXITSTATUS: 127
pid: -1 status value: 32767 WIFEXITED : 0 WEXITSTATUS: 127
pid: -1 status value: 32767 WIFEXITED : 0 WEXITSTATUS: 127
在这里pid = -1
暗示错误
我只想在孩子退出/终止但代码没有停止运行时才进行计算。子进程pid不能存储在我的环境中,因为子进程在很多地方都在创建和终止。
请让我知道我如何才能实现自己的目标。