当前位置: 技术问答>linux和unix
Linux的子父进程
来源: 互联网 发布时间:2017-03-29
本文导语: 在Linux中子父进程怎么区分?如#include #include #include 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=%dn",z); } else{ a = &z; *a=pid; p...
在Linux中子父进程怎么区分?如
#include上诉代码的子进程是什么,父进程是什么,有什么关系????
#include
#include
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=%dn",z);
}
else{
a = &z;
*a=pid;
printf("z2=%dn"z);
}
printf("pid=%dn"pid);
return 0;
}
|
pid==0的是子进程,不是0,是父进程。
调用fork的时候,linux内核开始采用copy on write 技术,产生新的进程,同时fork函数,在父进程和子进程各自返回值,父进程返回子进程的pid,子进程返回0,使用其实从fork开始,你的上述代码分别到了2个进程执行。
也就是说if分支,在主进程,else分支在子进程。
调用fork的时候,linux内核开始采用copy on write 技术,产生新的进程,同时fork函数,在父进程和子进程各自返回值,父进程返回子进程的pid,子进程返回0,使用其实从fork开始,你的上述代码分别到了2个进程执行。
也就是说if分支,在主进程,else分支在子进程。
|
用fork创建子进程;在子进程中 pid 是为0的;而返回到 父进程中的PID的值是一个正数。
一般用 if((pid=fork())==0)判断子进程。
你的程序if 为真 就是子进程了;else 就是父进程。
一般用 if((pid=fork())==0)判断子进程。
你的程序if 为真 就是子进程了;else 就是父进程。