2017-06-02 87 views
0

子进程是另一个运行于execlp的C程序。这台机器是Unix。我知道子进程可以通过execlp("ps", "ps", NULL)访问进程表,但我无法弄清楚它是如何确定它的兄弟姐妹的。儿童进程是否有可能获得其兄弟姐妹的PID?

即使进程是异步的,我知道兄弟进程将会运行。

+0

那么,甚至不可能在[tag:c]中fork()'“* child *”。所以我们假设你的意思是C和POSIX扩展。那么答案是:**否**,这是*不可*(没有调用外部工具或其他平台特定的黑客)。这可能是[XY-Problem](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)? –

+1

没有实际的方法来看这个(是的,你原则上可以解析'ps'的输出,但是呃)。你需要传达它,无论是从兄弟姐妹到兄弟姐妹,还是从父母到孩子。如果你告诉我们为什么你需要知道,我们可能会更具体。 – zwol

+0

是否有可能获得父母的pid,然后加1,直到我们找到一个与当前子进程的pid(getpid)不匹配的有效pid?有没有办法检查一个pid是否有效? 我知道一个更实际的方法是让孩子向父母提供兄弟姐妹的数据,并让父母回来,但我很好奇。 –

回答

1

子进程是否有可能获得其兄弟的PID?

没有使用某种协议与父母交谈,这是不可能的便携式方式。在某些系统上,它甚至可能根本不可能。