进程创建fork

        系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成
进程树结构模型。

       头文件:

  • #include
  • #include

函数原型:pid_t fork(void);
返回值:

  • 成功:子进程中返回 0,父进程中返回子进程 ID
  • 失败:返回 -1

失败的两个主要原因:
1. 当前系统的进程数已经达到了系统规定的上限,这时 errno 的值被设置
为 EAGAIN
2. 系统内存不足,这时 errno 的值被设置为 ENOMEM

        Linux 的 fork() 使用是通过写时拷贝 (copy-on-write) 实现。写时拷贝是一种可以推迟甚至避免拷贝数据的技术。内核此时并不复制整个进程的地址空间,而是让父子进程共享同一个地址空间。只用在需要写入的时候才会复制地址空间,从而使各个进行拥有各自的地址空间。也就是说,资源的复制是在需要写入的时候才会进行,在此之前,只有以只读方式共享。        

        注意:fork之后父子进程共享文件,fork产生的子进程与父进程相同的文件文件描述符指向相同的文件表,引用计数增加,共享文件偏移指针。

你可能感兴趣的:(Linux,linux,运维,服务器,c++)