fork创建一个子进程的一般目的:
进程创建概述:
写时拷贝:写时拷贝顾名思义就是“写的时候才分配内存空间”。这实际上是一种拖延战术。
在Linux程序中,fork()会产生一个和父进程完全相同的子进程,传统的fork()系统调用直接把所有的资源复制给新创建的进程,这种实现过于简单并且效率低下,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。
========================================================================================================================================================
代码如下:
结果如下(结果中打印的两个data其实来自不同的物理空间):
由结果可知,父进程的fork()返回值是子进程的pid号。
========================================================================================================================================================
补充:
=vfork函数 也可以创建进程,与fork有什么区别?===
关键区别一:
vfork 直接使用父进程存储空间,不拷贝。
关键区别二:
vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行。
示例如下:
运行结果: