- 论坛徽章:
- 0
|
各位好,有这样一个程序:- #include<stdio.h>;
- #include<unistd.h>;
- #include<sys/types.h>;
- #include<errno.h>;
- int main()
- {
- pid_t ret;
- if(ret=fork()<0){
- printf("fork error: %s\n",strerror(errno));
- exit(-1);
- }
- if(ret==0){
- printf("in process %d pid == 0\n",getpid());
- exit(0);
- }
- else{
- printf("process %d enter pid >;0 \n",getpid());
- }
- return 0;
- }
复制代码
我的理解是,当执行fork返回时,主进程和子进程各自持有不同数值的pid(主进程的变量ret是子进程的pid,子进程的变量ret为0)但是这段程序的运行结果是,父进程和子进程得到的变量ret的值都为0。父子进程都运行到ret==0的过程中去了
in process 16040 pid == 0
in process 16039 pid == 0
还请大家帮忙分析一下。 |
|