打印
[嵌入式linux]

linux下创建子进程的调用是fork()

[复制链接]
1181|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxlsunday|  楼主 | 2014-4-14 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.        #include <unistd.h>   
2.        #include <sys/types.h>   
3.        #include <stdio.h>   
4.          
5.          
6.          
7.        void print_exit()  
8.        {  
9.               printf("the exit pid:%d/n",getpid() );  
10.        }  
11.          
12.        main ()   
13.        {   
14.           pid_t pid;   
15.           atexit( print_exit );      //注册该进程退出时的回调函数   
16.              pid=fork();   
17.                if (pid < 0)   
18.                        printf("error in fork!");   
19.                else if (pid == 0)   
20.                        printf("i am the child process, my process id is %d/n",getpid());   
21.                else   
22.                {  
23.                       printf("i am the parent process, my process id is %d/n",getpid());   
24.                      sleep(2);  
25.                      wait();  
26.               }  
27.          
28.        }  

我知道fork()有两个返回值,我有一下不明白的fork()以后,根据返回值执行else if(pid == 0)()里面的程序,执行完了,程序不是完了,退出了这个函数。什么时候执行父进程里面的程序

困惑,希望那位帮忙解释一下!

相关帖子

沙发
qyihan| | 2014-4-15 16:08 | 只看该作者
本帖最后由 qyihan 于 2014-4-15 16:10 编辑

新进程几乎与原进程一模一样,执行的代码也完全一样,但新进程有自己的环境,数据空间和文件描述符。在父进程调用的fork返回的是新的子进程的PID,子进程调用的fork返回的是0。如果fork失败它将返回-1。wait是等待子进程执行完

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

87

帖子

2

粉丝