我正在调用一个外部程序(通过节点中的 pty.js),它在运行时会产生一个子进程。当父进程完成时,它会让子进程运行一段时间(孤儿)。我可以获取父进程的 id,但想获取生成的子进程的 id,以便在父进程退出时将其杀死。
我不相信节点中有任何方法可以实现这一点,那么 C 中是否有任何东西可以让您获取孩子的 id,只知道父 id。到目前为止,我发现的所有内容都与从 fork() 获取子 ID 有关,但分叉发生在外部程序中。
或者,我想我可以调用 ps 或 pstree / 类似的东西并解析输出,但感觉有点像 hack。
编辑
这不好,但到目前为止我已经想出了这个:
#include <limits.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
int id = atoi(argv[1]);
int i;
for(i = 0; i < INT_MAX; i++) {
if(i != id && getpgid(i) == id) {
printf("Process %d, is a child of %d", i, id);
break;
}
}
}