c 语言之fork() 函数用法
2017-09-19 09:52
926 查看
fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
1)在父进程中,fork返回新创建子进程的进程ID; 2)在子进程中,fork返回0; 3)如果出现错误,fork返回一个负值;
原理:
Linux下一个进程在内存里有三部分的数据,就是”代码段”、”堆栈段”和”数据段”。接触过汇编语言的人了解,一般的CPU都有上述三种段寄存器,以方便操作系统的运行。这三个部分也是构成一个完整的执行序列的必要的部分。“代码段”,顾名思义,就是存放了程序代码的数据,如果机器中有数个进程运行相同的一个程序,那么它们就可以使用相同的代码段。”堆栈段”存放的就是子程序的返回地址、子程序的参数以及程序的局部变量。而数据段则存放程序的全局变量,常数以及动态数据分配的数据空间(比如用malloc之类的函数取得的空间)。这其中有许多细节问题,这里限于篇幅就不多介绍了。系统如果同时运行数个相同的程序,它们之间就不能使用同一个堆栈段和数据段。
有两个基本的操作用于创建和修改进程:函数fork()用来创建一个新的进程,该进程几乎是当前进程的一个完全拷贝,利用了父进程的代码段、堆栈段、数据段,当父子进程中对共有的数据段进行重新设值或调用不同方法时,才会导致数据段及堆栈段的不同;函数族exec()用来启动另外的进程以取代当前运行的进程,除了PID仍是原来的值外,代码段、堆栈段、数据段已经完全被改写了。
相关文章推荐
- Go语言里的new函数用法分析
- C 语言中 springf 函数的用法详解
- Linux下进程管理(函数fork,wait,exec的用法)
- Python语言——Pandas包中的get_dummy()函数用法
- linux/Unix中fork函数的用法
- 7_26C语言|printf用法延伸+函数注释风格
- linux并发端口扫描以及fork()函数的用法;
- 举例详解Go语言中os库的常用函数用法
- 简述fork函数的用法
- R语言中cut()函数的用法?
- 简单掌握Linux系统中fork()函数创建子进程的用法
- fork()创建子进程步骤、函数用法及常见考点(内附fork()过程图)
- linux c语言 fork() 和 exec 函数的简介和用法
- C 语言中 sscanf() 函数的用法
- R 语言assign 和get 函数用法
- fork()函数的用法
- R 语言assign 和get 函数用法
- 通过对PHP语言的学习,应该知道它是基于函数的一款HTML脚本语言。庞大的函数库支持着PHP语言功能的实现。下面我们为大家介绍有关PHP函数isset()与empty()的相关用法。
- [置顶] 【R语言数据导出txt】 write.table 函数用法
- fork()函数用法理解