Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 子进程是否可以获取其同级进程的PID?_C_Asynchronous_Process_Fork_Exec - Fatal编程技术网

C 子进程是否可以获取其同级进程的PID?

C 子进程是否可以获取其同级进程的PID?,c,asynchronous,process,fork,exec,C,Asynchronous,Process,Fork,Exec,子进程是另一个使用execlp运行的C程序。这台机器是Unix。我知道子进程可以使用execlps、ps、NULL访问进程表,但我不知道它如何确定它的同级进程 即使进程是异步的,我知道同级进程将运行 子进程是否可以获取其同级进程的PID 如果不使用某种协议与家长交谈,这是不可能以可移植的方式实现的。在某些系统上,甚至可能根本不可能做到这一点。嗯,甚至不可能让孩子参与进来。假设你指的是带有POSIX扩展的C。答案是:不,如果不调用外部工具或其他特定于平台的黑客,这是不可能的。这可能是一个问题吗?没

子进程是另一个使用execlp运行的C程序。这台机器是Unix。我知道子进程可以使用execlps、ps、NULL访问进程表,但我不知道它如何确定它的同级进程

即使进程是异步的,我知道同级进程将运行

子进程是否可以获取其同级进程的PID


如果不使用某种协议与家长交谈,这是不可能以可移植的方式实现的。在某些系统上,甚至可能根本不可能做到这一点。

嗯,甚至不可能让孩子参与进来。假设你指的是带有POSIX扩展的C。答案是:不,如果不调用外部工具或其他特定于平台的黑客,这是不可能的。这可能是一个问题吗?没有实用的方法来查找这个问题是的,原则上你可以解析ps的输出,但是呃。你将需要沟通它,无论是从兄弟姐妹到兄弟姐妹,还是从父母到孩子。如果您告诉我们您需要知道的原因,我们可能会更具体一些。是否可以使用getppid来获取父进程的pid,然后向其中添加1,直到找到与当前子进程的pid getpid不匹配的有效pid?有没有办法检查pid是否有效?我知道一个更实用的方法是让孩子向家长询问兄弟姐妹的数据,然后让家长将其传回,但我很好奇。@BryanTan您可以检查pid是否对应于killpid为0的活动进程,但是想象一下,如果在创建第一个子进程之后,但在创建第二个子进程之前,某个不相关的进程调用fork会发生什么情况—下一个活动的pid将不属于您要查找的sib。另外,在killpid、0成功和您使用该信息执行某些操作之间,pid处的进程可能会退出并被另一个进程替换。伙计,您正在尝试执行错误的操作。解释你试图解决的实际问题。