自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 8.7IO进程线程

1>原理图2>信号量集的API函数接口。

2024-08-12 19:12:41 250

原创 8.6IO进程线程

1> system V提供了三种IPC(interprocess communication)进程间通信方式消息队列:本质上在内核空间维护了一个队列,发送者可以将消息先放入到该队列上,接收者根据自己的需求读取队列上的信息共享内存:本质上在独立于多个进程外,分配一个物理内存的映射,使得多个进程可以共享该内存空间信号量集:将多个无名信号量,放入一个集合中,分别控制不同的进程,用于进程间同步问题。

2024-08-06 20:00:55 536

原创 8.5IO进程线程

1> 对于多个线程之间通信,我们可以使用临界资源来完成,通过一个线程任务对临界资源进行修改,另一个线程也可以使用已经修改过的临界资源,但是要注意使用同步互斥机制完成对临界资源的保护2> 多个进程之间不能使用全局变量来进行进程间通信,多个进程之间的用户空间是相互独立的,每个进程的全局变量是各个进程独立拥有的,更改一个进程的全局变量,另一个进程不会受到影响,故而不能使用全局变量来完成通信。

2024-08-05 20:08:54 1274

原创 8.2IO进程线程

在使用临界资源完成多线程之间的通信时,当其中一个线程正在访问全局变量时,可能会出现时间片用完的情况,另一个线程将数据进行更改后,再执行该线程时,导致数据的不一致。这种现象我们称为竞态,为了解决竞态,我们引入了同步互斥机制。

2024-08-02 17:23:28 1229

原创 8.1IO进程线程

程序员写程序时,一个程序可能由多个任务组成,如果使用的是单进程,或单任务,那么该任务执行阻塞时,其他任务就无法执行,必须等到该任务解除阻塞后,才能去执行其他任务。多进程或多线程,可以解决同一个程序中多个任务并发执行的情况1.2进程的概念1>进程是程序的一次执行过程2>进程是程序资源分配的基本单位,系统会分给每个进程分配4G的虚拟内存,分为0--3G的用户空间和3--4G的内核空间多个进程共享内核空间,用户空间相互独立。

2024-08-01 18:50:48 1147

原创 7.31IO进程线程

父进程拷贝前一半内容,子进程拷贝后一半内容。子进程结束后退出,父进程回收子进程的资源。使用父子进程完成两个文件的拷贝。

2024-07-31 20:04:58 324

原创 7.31IO进程线程

IO思维导图标准IO文件IO

2024-07-31 14:19:07 109

原创 7.30IO进程线程

1> 文件描述符本质上是一个整数,当文件存储在本地磁盘时,属于静态文件。当使用open函数打开文件时,该文件就属于动态文件,后期需要对文件进行操作的话,需要基于一个句柄来完成。这个句柄就是文件描述符,用一个整数表示。2> 文件描述符是一个非负整数,一个进程能够使用的文件描述符默认为1024个。【0,1023】,可以通过指令 ulimit -a查看,并且可以通过ulimit -n进行修改进程能够打开的文件描述符个数3> 使用原则:最小未分配原则。

2024-07-31 09:02:56 326

原创 7.29IO进程线程

2>使用fread、fwrite读写整形数据。1> 写一个日志文件,将程序启动后,每一秒的时间写入到文件中。1>使用fread、fwrite读写字符串。3>使用fread、fwrite读写结构体。2.12 fprintf\fscanf:格式化读写函数。2> 使用fread、fwrite完成两个文件的拷贝。2.13 fread\fwrite:模块化读写。ctrl+c:停止程序 ./a.out。2.10有关系统时间的函数。2.14关于文件光标的函数。

2024-07-30 09:09:33 450

原创 7.26IO进程线程

1>IO:(inout output)所谓IO,就是程序与外部设备进行信息交换的过程2>IO的分类:标准IO和文件IO3>标准IO:调用封装好的相关库函数,来实现数据的输入输出4>文件IO:调用系统(内核)提供的相关函数,来实现数据的输入输出。

2024-07-26 20:07:55 461

原创 7.25数据结构

程序=数据结构+算法算法是程序设计的灵魂,结构是程序设计的肉体算法:计算机解决问题的方法或步骤。

2024-07-26 09:03:21 322

原创 7.24数据结构

1>树形结构:表示数据元素之间存在一对多的关系2>树:是由一个根节点多个子树构成的树形结构3>节点:就是树中的数据元素4>父亲节点:当前节点的直接上级节点5>孩子节点:当前节点的直接下架节点6>祖先节点:当前节点的直接或间接上级节点7>子孙节点:当前节点的直接或间接下级节点8>兄弟节点:拥有相同父节点的所有节点互称为兄弟节点9>堂兄弟节点:其父节点在同一层的所有节点,互为堂兄弟节点10>根节点:没有父节点的节点11>叶子节点:没有子节点的节点称为叶子节点。

2024-07-24 18:36:16 808

原创 7.23数据结构

1> 队列也是操作受限的线性表:所有操作只能在端点处进行,其删除和插入必须在不同端进行2> 允许插入操作的一端称为队尾,允许删除操作的一端称为队头3> 特点:先进先出(FIFO)4> 分类:顺序存储的队列称为顺序队列链式存储的队列,称为链式队列。

2024-07-23 16:57:33 995

原创 7.22数据结构

1)优点:能够直接通过下表进行定位元素,访问效率高,对元素进行查找修改比较快2)不足:插入和删除元素需要移动大量的元素,效率较低3)缺点:存储数据元素有上限,当达到MAX后,就不能再添加元素了、

2024-07-22 19:57:02 979

原创 7.18数据结构

1)数据:是能够被计算机识别、储存、处理的用于描述客观事实的符号2)数据的基本单位:数据元素数据元素:所谓数据元素就是能够完成描述事物的基本单位3)数据的最小单位:数据项数据项:用于组成数据元素的不可分割的最小单位4)数据对象:由多个数据元素组成的一个集合位数据对象。5)数据之间的关系:数据项==》数据元素==》数据对象==》数据。

2024-07-18 18:12:02 764

原创 7.17C语言

1)概念:由相同数据类型或不同数据类型构成的集合,但是,该集合中的成员共享同一块内存空间2)定义格式union 共用体名称成员类型1 成员变量1;成员类型2 成员变量2;成员类型n 成员变量n;3)共用体初始化共用体初始化与结构体一致(初始化给定一个值即可,因为成员共享一块内存空间)4)共用体访问成员跟结构体一致5)共用体成员中可以包含基本数据类型,也可以包含构造数据类型6)共用体变量的大小,是所有成员中占内存最大的成员的大小。

2024-07-17 20:37:18 856

原创 7.16C语言

定义格式:struct 结构体名称成员类型1 成员变量1成员类型2 成员变量2........成员类型n 成员变量n注意事项:1)struct是定义结构体类型的关键字,不能省略2)结构体名称:标识符,符合命名规则,一般建议首字母大写3)成员属性使用一对花括号包裹起来4)成员类型可以是基本数据类型,也可以是构造数据类型、指针类型5)定义结束后,必须加上分号结尾。

2024-07-16 20:42:57 843

原创 7.12C语言

指针作为函数的参数进行数据传递时,不一定是地址传递即普通变量作为函数的参数进行数据传递时,在函数结束后,无论函数中进行了什么操作,普通变量的值在函数结束后不会变化,即函数进行前后,传递的普通变量的值是一样的。要想普通变量的值在函数结束后与函数内部运行结果一致,就需在传递时用指针传递普通变量的地址,在函数中对普通变量地址中的内容进行操作,才可使函数结束后,变量进行改变。

2024-07-12 19:53:51 300

原创 7.11C语言

定义格式数据类型*指针名列:int *ptr;指针变量的初始化1.使用一个相同数据类型的变量的地址为其进行初始化2.使用一个已经初始化了的指针变量给一个新的指针变量进行初始化3.使用地址的0就是NULL为其初始化4.注意:没有初始化的指针变量不能直接使用,因为该指针变量中存储一个随即地址,如果对其进行更改,可能会导致系统崩坏5.野指针:指向非法内存的指针称为野指针产生情况:1.定义指针时,没有为其进行初始化。

2024-07-11 20:43:08 937

原创 7.10C语言

定义格式char 数组名[常量1][常量2]常量1:表示的是定义的字符串的个数常量2:表示的是,每个字符串的最大长度加一使用格式1.单字符使用:数组名[行标][列标]2.字符串使用:数组[行标]初始化方式1.单字符初始化:该方式跟二维数组一致2.字符串初始化:全部初始化;特殊初始化:char arr[][8]={"apple","banana","orange"};//此时省略的第一维会根据初始化字符串的个数确定部分初始化;//没有初始化的字符串默认为空串函数执行特定功能的一段代码。

2024-07-10 21:00:13 545

原创 7.9C语言

定义格式数据类型 数组名[常量1][常量2]常量1:表示定义数组时数组的行数,也可以理解成一维数组的个数常量2:表示定义数组时的列数,也可以理解成每个一维数组的长度使用格式1.数组名[行标]:表示下标为“行号”的那个一维数组的数组名2.数组名[行标][列标]:表示下标为[行标][列标]的一个变量二维数组的初始化1.按行初始化:定义数组时,每一个一维数组的值使用一个花括号括起来2.按行部分初始化:每个一维数组中,可以不填满,没有初始化的部分用0补齐。

2024-07-09 20:50:53 1033

原创 7.8C语言

定义数组是连续存储多个相同数据类型的变量集合,数组属于构造数据类型注意1.连续存储,说明这多个变量的地址是连续的2.相同数据类型,说明同一个数组中的每个变量的数据类型都是一样的3.变量的集合:说明数组定义时不能为空定义格式1.数据类型:可以是基本数据类型,也可以是构造数据类型,指针数据类型或者空类型2.数组名:标识符,要符合标识符命名规则1)只能由字母、数字、下划线组成2)不能以数字开头3)不能使用关键字4)严格区分大小写5)做到见名知意3.表示这是数组的标识,正在定义一个数组。

2024-07-08 17:28:34 215

原创 7.5C语言

lifor(表达式1;表达式2;表达式3)语句块;表达式1循环变量赋初值表达式2终止条件表达式3增值或减值先执行表达式1判断表达式2是否成立成立进入循环执行代码块再执行表达式3再判断表达式2是否成立不成立:循环结束变形int i;for(i=1;i<5;for(;i<5;

2024-07-05 17:36:49 230

原创 7.4C语言

全局变量和局部变量:两者可以重名,赋值遵循就近原则。

2024-07-04 18:27:22 690

原创 7.3 C语言

置零公式:a&(~(1

2024-07-03 18:07:29 1044

原创 7.2 作业

vscode 编译器比vi编译器操作更加便捷,可在vscode编译器中输入“ctrl+~”在vscode中打开终端。d=(b--)+(++c)//会先进行++c,将b+(++c)的值赋给d后,再进行b--tail -n test1.c 在终端查看文件内容de后n行。命令“vscode 文件名或目录名”可以在vscode编译器中打开 文件或目录:如 vscode text.c。命令“vi 文件名 ”可以直接生成文件:如 vi text.c 可直接生成text.c文件,文件需保存。

2024-07-02 18:53:48 709

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除