进程管理-进程API

进程相关函数有哪些?

fork()

用于创建新进程,创建出来的进程被称为子进程,子进程与父进程几乎一样。子进程不会从main函数开始执行,而是直接从fork系统调用中返回。
子进程拥有自己的地址空间(即私有内存),寄存器,程序计数器等,但是它从fork返回的值是不同的。父进程获得的返回值是新创建子进程的PID,子进程获得的返回值是0.

子进程和父进程的相同点

  1. 拷贝完成后,两个地址空间的用户区数据是相同的。用户数据主要包括:
    • 代码区
    • 全局数据区
    • 堆区
    • 动态库加载区(内存映射区)
    • 栈区
    • 环境变量
    • 文件描述符:父进程中被分配的文件描述符都会被拷贝到子进程中,在子进程中可以使用他们打开对应的文件。

子进程和父进程的区别

  1. 父子进程各自的虚拟地址是相互独立的,不会互相影响和干扰。
  2. 父子进程的代码区虽然相同,但是执行的代码逻辑可能是不同的。一些情况下会用if判断父子进程,分别执行不同的代码块。
  3. 内核区存储的父子进程ID是不同的。
  4. fork调用成功之后,会返回两个值,父子进程的返回值是不同的。

进程管理-进程API
http://example.com/2025/05/19/OperatingSystem/进程管理-进程函数/
作者
ZhangHangming
发布于
2025年5月19日
许可协议