当前位置:   article > 正文

关于fork()函数需要注意的地方_使用fork有什么需要注意的

使用fork有什么需要注意的

1.关于fork()的描述

 fork通过复制调用进程创建一个新进程,则这个新进程就叫做子进程,被调用的进程叫做父进程。子进程与父进程在不同的内存空间中运行。在调用fork()函数时,两个内存空间具有相同内容。其中一个进程执行的内存写、文件映射对另一个进程没有影响。

2.关于fork()返回值

 当成功调用fork()时,在父进程中返回子进程的PID,且返回值为0.调用失败时,返回值为-1。如果没有创建新进程时,系统会返回一个非负整数。

3.代码编程实例

 编译运行结果如下:

 由运行结果可以看出,调用fork()函数后,在fork()之后的代码执行第一次时,fork()返回值即retpid=7080把值赋给父进程。执行第二次时,父进程创建子进程,retpid=0把值赋给子进程,而此时子进程的pid刚好等于fork()赋给父进程的返回值即retpid=7080。

4.对fork()的总结

 通过简单的代码模拟服务器接收客户端发送的链接请求,从而创建新的进程。其运行结果如下:

 子进程与父进程是互不影响的,同时在调用fork()后,linux存在两种拷贝。第一种是全拷贝,包括堆、栈、文件、I/O流,数据等等;第二种则是写时拷贝(Copy On Write)即COW,例如当子进程没有对程序中的初始化数据进行修改时,代码中所有的数据均是父、子进程所共有的;反之,子进程则会去拷贝父进程的中那个修改的数据。

创建子进程的目的:

这是个人对fork()学习的理解,也是提醒自己在学习这部分内容需要注意的地方,希望对你有帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/181119
推荐阅读
相关标签
  

闽ICP备14008679号