如何解决如何在C中找到Granchild pid?
我正在尝试为玩具过程管理器编写代码,并且想知道当我的一个小孩子pid死后如何找到孙子pid。即如何处理“就绪协议”。
systemd具有“ Type = forking”选项,据我所知,它等待派生的pid死亡,然后假定派生pid的子级之一是要监视的实际“守护程序”。
到目前为止,我的代码如下,但我缺少XXX
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/prctl.h>
int
main (int argc,const char *argv[])
{
printf("sup stared\n");
int pid;
prctl(PR_SET_CHILD_SUBREAPER);
pid = fork();
if (pid == 0) {
setpgid(0,0);
printf("service started,pid: %d,pgid: %d\n",getpid(),getpgid(0));
int dpid;
dpid = fork();
if (dpid == 0) {
printf("daemon started,getpgid(0));
while (1);
}
printf("service exiting\n");
return 0;
} else {
printf("service pid: %d\n",pid);
int rc;
rc = waitpid(pid,NULL,0);
printf("service exited? %d\n",rc);
int dpid;
dpid = XXcX();
printf("daemon,%d\n",dpid);
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。