【发布时间】:2013-08-06 09:57:42
【问题描述】:
我正在调用一个外部程序(通过节点中的 pty.js),它在运行时会生成一个子进程。当父进程完成时,它会让子进程运行一段时间(孤儿)。我可以获取父进程的 id,但想获取生成的子进程的 id,以便在父进程退出时将其杀死。
我不相信 node 有任何方法可以实现这一点,所以 C 中有什么东西可以让你获取孩子的 id,只知道父 id。到目前为止,我发现的所有内容都与从 fork() 获取子 ID 相关,但 fork 发生在外部程序中。
或者,我想我可以调用 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;
}
}
}
【问题讨论】: