进程管理-进程API
进程相关函数有哪些?
fork()
用于创建新进程,创建出来的进程被称为子进程,子进程与父进程几乎一样。子进程不会从main函数开始执行,而是直接从fork系统调用中返回。
子进程拥有自己的地址空间(即私有内存),寄存器,程序计数器等,但是它从fork返回的值是不同的。父进程获得的返回值是新创建子进程的PID,子进程获得的返回值是0.
子进程和父进程的相同点:
- 拷贝完成后,两个地址空间的用户区数据是相同的。用户数据主要包括:
- 代码区
- 全局数据区
- 堆区
- 动态库加载区(内存映射区)
- 栈区
- 环境变量
- 文件描述符:父进程中被分配的文件描述符都会被拷贝到子进程中,在子进程中可以使用他们打开对应的文件。
子进程和父进程的区别:
- 父子进程各自的虚拟地址是相互独立的,不会互相影响和干扰。
- 父子进程的代码区虽然相同,但是执行的代码逻辑可能是不同的。一些情况下会用if判断父子进程,分别执行不同的代码块。
- 内核区存储的父子进程ID是不同的。
- fork调用成功之后,会返回两个值,父子进程的返回值是不同的。
进程管理-进程API
http://example.com/2025/05/19/OperatingSystem/进程管理-进程函数/