Linux的子父进程
在Linux中子父进程怎么区分?如
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int z=0;
int main(){
int *a = 0;
pid_t = pid;
if((pid=for`k())){
a = (int*)malloc(100*sizeof(int));
z = pid;
printf("z1=%d\n",z);
}
else{
a = &z;
*a=pid;
printf("z2=%d\n"z);
}
printf("pid=%d\n"pid);
return 0;
}
上诉代码的子进程是什么,父进程是什么,有什么关系????
------解决方案--------------------pid==0的是子进程,不是0,是父进程。
调用fork的时候,linux内核开始采用copy on write 技术,产生新的进程,同时fork函数,在父进程和子进程各自返回值,父进程返回子进程的pid,子进程返回0,使用其实从fork开始,你的上述代码分别到了2个进程执行。
也就是说if分支,在主进程,else分支在子进程。
------解决方案--------------------用fork创建子进程;在子进程中 pid 是为0的;而返回到 父进程中的PID的值是一个正数。
一般用 if((pid=fork())==0)判断子进程。
你的程序if 为真 就是子进程了;else 就是父进程。