自定义博客皮肤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)
  • 收藏
  • 关注

原创 Linux进程间通信——共享内存

这样挂载一个共享内存如果是第一次调用时没有问题的,但是一个进程是可以对同一个共享内存多次shmat进行挂载的,物理内存是指向同一块,如果shmaddr为NULL,则每次返回的线性地址空间都不同,而且指向这块共享内存的引用计数会增加,也就是进程多块线性空间会指向同一块物理地址,这样会一直消耗进程的虚拟内存空间,很有可能会最后导致进程线性空间被使用完,而导致下次shmat或者其他操作失败。这样进程就与共享内存建立了连接。cat /proc/sys/kernel/shmmni

2022-11-03 01:15:23 293 2

原创 Linux进程间通信——消息队列

1. 消息队列可以实现消息的随机查询,满足队列的特点但不一定要以先进先出的次序读取,可以按消息的类型读取;System V提供的IPC通信机制需要一个key值,通过key 值就可在系统内获得一个唯一的消息队列。5. 只有内核重启或人工删除时,该消息才会被删除,若不人工删除消息队列,消息队列会一直存在于内存中。3.与无名管道、有名管道一样,从消息队列中读出消息,消息队列中数据会被删除;4.消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级;2.消息队列允许一个或多个进程向它写入或者读取消息;

2022-11-02 23:52:16 1694

原创 Linux进程通信—管道

3.FIFO(first in first out)按照先进先出的原则工作,先被写入的先被读出。1.它是以一种特殊文件类型存在于文件系统(设备文件);创建管道后“写端”进程会堵塞,等待另外一个进程读出数据。2.它适用于不仅限于亲属进程间的通信;管道文件里的内容读完之后就某有了。FIFO,也称命名管道。

2022-11-02 22:10:20 138

原创 树莓派——串口通信

在使用read函数对串口进行读取数据之前,最好先使用serialFlush函数对串口缓冲区进行刷新,不然可能会一直读不到数据。:列如使用USB转TTL让电脑和树莓派进行通信,树莓派的TXD则接转换模块的RXD,RXD接TXD。Tips:删除之后就无法通过串口登录树莓派,若需要串口登录再添加进去就ok了。同时需要把GND也接上,因为两个平台的电压可能不同,导致数据传输发生错误,在树莓派中有封装好的wiringPi库,可以使用库函数进行通信。:树莓派使用串口通信前需要进行一些配置。需要将里面用于串口登录的。

2022-10-17 00:40:45 2628

原创 自己实现字符串常用API

目录1,实现puts,gets,strlen,memset2,实现 strcpy,strncpy,strcat1,实现puts,gets,strlen,memset#include <stdio.h>#include <stdlib.h>#include <string.h>void myPuts(char *p)//*除了变量声明以外,其他都是运算符{ //字符串有明显的标志,都是以\0结尾 while

2022-05-22 13:55:20 76

原创 Linux文件编程

常用函数1,open2,write3,read4,lseek光标重定位1,openSYNOPSIS#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); int creat(c

2022-05-21 20:10:27 130

原创 基于WeMos的WiFi避障小车

Ardiuno,WeMos,ESP8266,WiFi控制小车

2022-05-16 22:50:43 578

原创 【socket网络编程——FTP云盘】

项目功能实现客户端远程从服务器端获取文件(get xxx)实现客户端上传文件到服务器端(put xxx)对服务器当前目录的基本操作(ls,cd,pwd)对客户端当前目录的操作(lls,lcd)> 1,2是项目的主要功能> 3,4是为了方便1,2功能de项目实现在Linux系统下基于socket编程实现,用到以下主要函数:服务器端#include<stdio.h>#include<stdlib.h>#include <sys/typ

2022-05-14 01:01:10 293

原创 C语言小游戏--贪食蛇

基本思路在Linux系统下利用Ncurses图形库,创建游戏的终端页面通过pthread库函数创建多线程任务,供游戏中食物和蛇的不断更新NcursesNcurses 提供字符终端处理库,包括面板和菜单为了能够使用ncurses库,必须在源程序中将<curses.h> 包括进来,而且在编译的需要与它连接起来(链库-lcurses)pthread在Linux下创建线程的API为pthread_createint pthread_create(pthread_t *thread, co

2022-05-11 23:51:27 532

原创 【C语言--结构体】

结构体初识struct即结构体,亦被直接称为“结构”。实际编程时,经常需要用相关的不同类型的数据来描述一个数据对象。例如,描述学生的综合信息时,需要使用学生的学号、姓名、性别、成绩以及家庭住址等不同类型的数据。但是,用相关的不同类型的数据来描述一个数据对象会使编程极为不便。因此,C语言提供了一种称为结构体(struct)的数据类型,以描述需要不同类型数据的数据对象 。结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下

2022-05-10 23:42:22 246

原创 字符串操作常用函数

1.输出字符串puts()和printf()2.获取字符串gets()和scanf()3.计算字符串长度strlen()

2021-06-06 16:52:18 136

原创 字符串及有效长度(字节数)计算

字符串即字符数组,与整型数组类似,占用连续的空间字符串在内存中,除了有效字符以外,还会在后面补一个’/0’,作为字符串的结束标识数组的大小计算方式元素个数*元素类型大小

2020-12-19 22:48:16 7271

原创 函数指针

如何定义一个函数指针1.*表示指针2.()表示函数3.专用格式(参数类型,个数,返回值)如何通过函数指针调用函数a.直接通过指针名➕()b.(*指针名)()//取内容

2020-12-15 23:50:05 63

原创 指针数组&数组指针

指针数组指针的数组本质上是数组,存放多个指针数组指针数组的指针本质上是一个指针变量/1.以前我们的指针是指向数组的头//指针=数组的首地址(数组名;第一个元素的地址)//注意指针偏移值,不能超出数组(越界)(结果可能会出现乱码)2.此指针明确规定了要指向数组的类型及大小///在一个指向整型数的指针中,(++p)指针的偏移值是4个字节;//这一个指向数组的指针中,(++p)指针的偏移值是整个数组的大小...

2020-12-15 23:07:20 104

原创 指针变量

变量的访问方式1.通过函数名(问路:通过目的地名称一路问过去)2.通过地址(指针)[同样问路:直接输入地址导航]&取地址取函数名所代表变量的的内存地址(int a;&a)//windows中啊哈c用4个字节表示地址,Linux中用8个字节表示地址指针变量int a;//整型变量 存放的是整型数据char c;//字符变量 存放的是字符型数据int* p;//指针变量 存放的是地址注:只有在定义一个指针变量时 *才作为指针标识符,其他情况,都作为运算符,功能是取出内存

2020-12-12 23:38:32 87

原创 数组与函数

在这里插入代码片

2020-12-12 10:55:10 121

原创 数组

数组当我们对0-100进行求和时,需要输入多个数来进行累加,这时我们引入数组来简化求和过程。1.int array[6];//无初始化数组,仅仅申请了6个整型数的内存空间 最好初始化int array[6]={0};2. int array1[5] = {1,2,3,4,5};//申请了5个整型内存空间,并初始化,且赋值1,2,3,4,53. int array2[100]={1,2,3};//申请了100个整型内存空间,但没有完整初始化,赋值1,2,3放在数组前三个位置4. 遍历数组/数

2020-12-11 23:50:21 194

原创 函数

1.什么是函数?/*函数是一个功能模块,它把实现某个功能的代码块包含起来,并起一个函数名,供别人调用。例如printf函数,syetem函数都是程序运行中包装起来的步骤*/2.函数的调用函数调用的好处分工明确;代码可观性高;可复用性强;易定位;3.定义一个函数a.函数名 b.函数体(代码块){int score;}如何定义一个函数INT PREPARE返回值,形式参数,函数名,函数体4.如何调用函数a.函数名(实际参数)b.函数名(形式参数)5.一般函数定义的几种情况(部分)a.无

2020-12-11 23:39:31 155

原创 形式参数与实际参数

形式参数1.作用域仅限该函数;2.也是一个变量(局部变量),有自己的空间;/*空间的存亡期a.何时申请了该空间?当函数被调用时,才申请了该空间,才有了这个变量。同时,这个空间内的数据被赋值为实际参数的值(函数调用把实际参数的值拷贝一份给形式参数)b.何时释放该空间?当函数执行完后,该空间由内存管理单元自动回收*/实际参数函数调用的时候,传递的参数叫实际参数//如果调用的函数带有参数,必须传参!!!//传递的参数对格式没有要求,对数据类型严格要求!...

2020-12-11 18:01:42 1363

空空如也

空空如也

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

TA关注的人

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