当前位置: 技术问答>linux和unix
请问父进程如何获得子进程的子进程的pid号?
来源: 互联网 发布时间:2015-01-06
本文导语: 请问父进程如何获得子进程的子进程的pid号? 我这样写的,可是不对:( #include "stdio.h" main() { int i,n2=2,father,child1,child2; father=getpid(); printf("I am father!My ID is %d!n",father); while((i=fork())==-1) printf("For...
请问父进程如何获得子进程的子进程的pid号?
我这样写的,可是不对:(
#include "stdio.h"
main()
{
int i,n2=2,father,child1,child2;
father=getpid();
printf("I am father!My ID is %d!n",father);
while((i=fork())==-1) printf("Fork Error0!");
if(i==0)
{
child1=getpid();
printf("I am the first child! My ID is %d!n",child1);
while((i=fork())==-1)printf("Fork Error2!");
if(i==0)
{
child2=getpid();
printf("I am the first child's child!My ID is %dn",child2);
exit(2);
}
}
else
{
child2=wait(&n2);
child1=i;
printf("child1'ID=%dtchild1's child' ID=%dn",child1,child2);
}
}
我这样写的,可是不对:(
#include "stdio.h"
main()
{
int i,n2=2,father,child1,child2;
father=getpid();
printf("I am father!My ID is %d!n",father);
while((i=fork())==-1) printf("Fork Error0!");
if(i==0)
{
child1=getpid();
printf("I am the first child! My ID is %d!n",child1);
while((i=fork())==-1)printf("Fork Error2!");
if(i==0)
{
child2=getpid();
printf("I am the first child's child!My ID is %dn",child2);
exit(2);
}
}
else
{
child2=wait(&n2);
child1=i;
printf("child1'ID=%dtchild1's child' ID=%dn",child1,child2);
}
}
|
利用共享内存
|
说说我从你的代码里看到的问题:
在fork之后,子进程和父进程各自拥有自己的地址空间。所以,在fork之后
在子进程里对child1, child2赋值不会反映在父进程中。
在fork之后,子进程和父进程各自拥有自己的地址空间。所以,在fork之后
在子进程里对child1, child2赋值不会反映在父进程中。
|
子进程可以通过管道传给父进程,或者干脆把进程号写到文件里。
|
用IPC
|
我劝阁下还是看看《linux编程白皮书》,会很有帮助的!
|
up
|
呵呵,我用的就是x86(大雪)的方法。
|
用脚本也可实现
如果你不是很复杂的要求
如果你不是很复杂的要求