自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式学习——进程间通信方式(5)—— 信号量

信号量和之前的所说的管道、共享内存、消息队列、信号是不一样的,信号量的本质是一个整型计数器,不以传输数据为目的,主要是对临界资源进行一个保护,例如我们在操作共享内存时,要配合信号量来进行使用,目的是为了对共享内存数据的保护,防止多进程同时操作出现数据混乱。

2024-12-09 14:36:42 692

原创 嵌入式学习——进程间通信方式(4)—— 消息队列

消息队列是一个进程向另一个进程发送一个数据块,每个数据块都含有一个类型,接收方可以接收自己想要的消息类型。消息队列、信号的区别:信号能承载的数据量较小,而队列能够存放大量自定义的数据。消息队列、管道的区别:① 、有名管道和消息队列都可以通过不同进程传输数据,都是要发送和接收数据,但是有名管道利用的是read()、write()函数,而消息队列则是通过msgsnd()、msgrev()。②、管道只能传输无字节流的数据,而消息队列可以支持各种类型的数据,有格式的字节流。

2024-09-29 08:00:00 1263 1

原创 嵌入式学习——进程间通信方式(3)—— 共享内存

但是,这种内存空间我们要对其进行维护,保护的一个操作,例如:进程A往共享内存存数据,而此时进程B刚好在读数据,那B读取的数据就可能会出现数据混乱,因此,共享内存属于临界资源,我们在操作它时要进行保护操作,即在某一个时刻,只有一个进程对其进行读/写操作,防止数据出现混乱。什么是共享内存,顾名思义,就是将共享一片内存空间,共享内存允许多个不同的进程访问同一片内存空间。那如何实现的呢,只要你想访问这片内存空间,你得先把这片内存空间映射到你的内存中,然后再对其进行操作。4)无同步无互斥,需要信号量配合。

2024-09-28 08:00:00 1072

原创 嵌入式学习——进程间通信方式(2)—— 信号

信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。正如我们所了解的中断服务函数一样,在中断发生的时候, 就会进入中断服务函数中去处理,同样的,当进程接收到一个信号的时候,也会相应地采取一些行动。特别地,如果新的seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。查看系统中存在的信号,在Linux系统中信号33和32是不存在的,而且信号是以SIG开头的。信号的特点:适合发送简单的数据,信号的数值系统是有限制的。

2024-09-27 10:32:25 1320

原创 嵌入式学习——进程间通信方式(1)——有名管道和匿名管道

我们要知道管道为什么叫做管道,管道就好比我们生活中的水管,水总是从一端流向另一端,你总不能从水龙头往里灌水吧,它只能出水。1)相同点:open打开管道文件以后,在内存中开辟了一块空间,管道的内容在内存中存放,读写数据都是在给内存的操作,并且都是半双工通讯。2)会在文件系统中体现出一个文件,即管道文件(注意:管道文件在Windows不存在,所以不能在共享文件夹中创建管道文件)。1)可以在不同的进程中相互进行通信,不需要具有亲缘关系的进程,也可以在具有亲缘关系的进程中使用。2)进行读/写管道文件。

2024-09-26 17:07:29 863

原创 Linux环境下安装部署MySQL8.0以上(内置保姆级教程) C语言

⼆、登录MYSQL。

2024-09-23 16:41:23 1455

原创 嵌入式学习——指针(二)

⑴ 如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的 下一个元素,p-1指向同一数组中的上一个元素。⑶ 如果p的初值为&a[0]则p+i 和a+i 就是数组元素a[i]的地址,或者说,它们指向a数组的第 i 个元素。⑵ 如果p原来指向a[0],执行++p后p的值改变了,在p的原值基础上加d,这样p就指向数组的下一个元素a[1]。⑤ 若p指向a数组中第i个元素,则:*(p--) 相当于a[i--],先*p,再p--⑷ *(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。

2024-07-27 21:07:24 755

原创 嵌入式学习——C语言指针(一)

基本类型标识符 *指针变量名;注意:(1)指针变量名前的“*”只表示该变量为指针变量,以便区别于普通变量的定义,而指针变量名不包含该“*”。例如: int x,*s;说明了s是一个指针变量,但不能说*s是指针变量。(2)定义指针变量时必须指明基类型。一个指针变量不能忽而指向整型,忽而又指向实型。因为,不同类型的变量所占的字节数是不同的。

2024-07-26 23:14:58 1818

原创 嵌入式学习——C语言函数(一)

函数就是用来完成一定功能的一段程序模块。类型标识符 函数名(参数表 )函数体语句return a>b?a:b;//比较a和b的大小,并返回大的那个值1)返回类型:函数的返回值类型2)函数名:遵循标识符规则3)形参列表:用于接受主调函数传递数据,如果有多个形参需要用逗号隔开,并且每一个形参需要说明具体的类型。

2024-07-20 13:39:49 914

原创 嵌入式学习——C语言字符数组及其函数

1)用于存放字符型数据的数组称为字符数组。2)在C语言中,字符数组中的一个元素只能存放一个字符。一般形式:1)char 数组名 [常量表达式];一维字符数组2)char 数组名[常量表达式1][常量表达式2];二维字符数组。

2024-07-18 11:52:46 3850

原创 嵌入式学习——C语言二维数组

数据类型 数组名 [ 常量表达式1] [ 常量表达式2];常量表达式1-------------------->行常量表达式2-------------------->列存储数据:行变化的慢,列变化的快。我们可以从图上看出,二维数组的存储方式:每一行存储完再进行下一行的存储的。所以它的行肯定变化慢,每一列的值每次都在变化的。

2024-07-17 16:36:13 533

原创 嵌入式学习——C语言的数组

数据类型 数组名 [数组容量/大小]//定义了一个float类型的数组,数组名字叫high,数组可以存放10个元素在数组中的内存是连续的,数组的内存和数据类型与数组容量有关我们可以看到,定义了数据类型为int的数组,其内存的大小就是:int类型的大小×元素的个数6*4=24。int main()printf("test的内存大小为:%ld\n",sizeof(test));return 0;如果我们定义4个变量,然后查看他们的内存地址,他们的内存是不连续的。

2024-07-15 19:51:35 595

原创 嵌入式学习——C语言输入输出语句

可见:用于输入与输出整型数据的格式说明符是完全一样的,m表示输入数据时的宽度(即列数),与输出情形一样,对于八进制形式与十六进制形式的输入格式,主要用于输入无符号整型的数据。⑷ 在输入数值型数据时,遇到空格、回车、Tab键或遇非法输入,则认为该数据结束: scanf("%d%c%f", &a,&b,&c);⑶ 用%c格式输入字符时,空格和转义字符都作为有效字符输入,应注意:scanf("%c%c%c", &a,&b,&c);,如:%d、%c、%f等,是格式说明符,用于说明输出项目所采用的格式;

2024-07-12 22:12:59 1116

原创 嵌入式学习——C语言数据结构(学习中遇到的坑点)

中,程序通过不断读取缓冲区中的字符来获取用户输入,直到缓冲区为空。当按下 Enter 键时,输入的字符会被依次放入缓冲区,其中换行符 '\n' 也会被存储在缓冲区中,表示输入行的结束。我们是根据ASCLL码表对应,‘8’对应的是56,而‘0’是48,我们加上一个8刚好是56,ASCLL中56对应的字符‘8’。我们可以看到输出结果中虽然还是8,但是它的类型其实已经变了,变成char类型了,因为char类型的字节是1.因为之前学习的是Java,所以一开始容易把负数也下意识以为是false。

2024-07-11 23:29:20 366

原创 嵌入式学习——C语言数据结构(三)

A=21 ====》转成二进制 0 0 0 0 1 1 0 0。例:C=12 ====》转成二进制 0 0 0 1 0 1 0 1。1、+= 加且赋值 C += A;6、>>= 右移且赋值 C >>= A;等价于C = C<<A。0 0 0 0 0 1 0 0=====》十进制4。

2024-07-10 23:28:01 798

原创 嵌入式学习——C语言数据类型(二)

用二进制表示就是 (符号数位1位)0 (指数位8位)1000 0011 (尾数位23位)1011 1000 0000 0000 0000 000。尾数(小数点后的数)10111,补够23位 1011 1000 0000 0000 0000 000。3)数值位:原码 反码 补码 表示方法不同 (这里以负数为例,正数的原码,反码,补码都一样)指数:4,加上127,就是131,二进制1000 0011。1)表示方法中,将数据分为两部分,2、反码:原码的符号位不变,其余各位按位取反。

2024-07-09 22:38:41 660

原创 嵌入式学习——C语言的数据类型(一)

int 整型: ------------------> 4字节---------------------->4字节。long 长整型:---------------> 8字节---------------------->4字节。short 短整型:-------------> 2字节---------------------->2字节。char 字符类型:-----------> 1字节---------------------->1字节。包括整型常量、浮点型常量、字符常量、字符串常量、符号常量。

2024-07-09 20:52:41 1134

原创 嵌入式学习历程——Linux基础指令

运行在硬件平台上的一套软件,可以向应用程序提供访问硬件的接口,并可以直接操作硬件的运行,应用程序是应用在操作系统上的。

2024-07-08 22:53:34 422

原创 嵌入式学习——C语言概述(编译原理)

这段代码就是将写好的hello.c文件进行分段编译 将hello.c文件转换成hello.i。:通过gcc编译器把预处理的文件进行语法分析、语义分析,以及优化成对应的汇编代码文件。把hello.c或者hello.i文件转换成hello.s的预处理好的文件。:宏指令的替换(# include 等等)、删除注释、添加行号等。:通过链接器LD,将hello.s文件和库文件进行链接,生成可执行文件。输入设备、内存、cpu(运算器、控制器)、外存储器、输出设备。

2024-07-08 19:40:56 1958

空空如也

空空如也

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

TA关注的人

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