进程与fork
进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
四要素
- 要有一jin段程序供该进程执行
- 进程专用的堆栈空间
- 进程控制块,在linux中具体实现为task_struck结构
- 有独立的存储空间
三类型
- 交互进程 : 由shell 启动的进程,可以在前台运行,也可以在后台运行
- 批处理进程: 这种进程和终端没有联系,是一个进程序列
- 监控进程: Linux 系统启动时启动的进程,并在后台运行
区分
进程与程序
作业与进程
作业和进程都是在操作系统执行的程序,但作业不是程序。
一个正在执行的进程称为一个作业,而作业可以包含一个或多个进程
作业控制:控制正在运行的进程的行为。
进程+作业控制 = 作业
进程与线程
fork
要创建一个进程,系统调用fork派生一个进程。
源进程称为父进程,派生出来的进程称为子进程
子进程是父进程的拷贝,子进程从父进程获取数据段和堆栈段的拷贝
创建成功父进程返回 新子进程pid ,子进程返回 0;失败 返回 -1
fork执行后执行父进程还是子进程不确定, 由内核使用的调度算法决定
fork使用
示例函数
#include <sys/types.h> #include <unistd.h> #include <stdio.h> int main(){ int pid=1; pid=fork(); if(pid==0){ //pid为0,表示为子进程 printf("我是子进程, 我的pid是:%d\n", getpid()); } else if(pid>0){ //pid>0表示父进程,此时返回值为子进程的pid printf("我是父进程,我的pid是: %d\n", getpid()); } else { //fork 失败 printf("fork失败"); } }
运行结果
说明: 在执行pid=fork()
前只有一个进程, 执行后就会有两个进程在执行这个程序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)