- 博客(57)
- 收藏
- 关注
原创 LINUX线程
后台服务进程* 独立于控制终端* 周期性执行某任务* 不受用户登录注销影响* 一般采用以d结尾的名字(服务)* 进程的组长* 组里边的第一进程* 进程组的ID==进程中的组长的ID* 进程中组长的选择* 进程中的第一个进程* 进程组ID的设定* 进程组的ID就是组长的进程ID* 创建一个会话注意事项* 不能是进程组长(除了只有一个进程组的会话外)* 创建会话的进程成为新进程组的组长* 有些lInux版本需要root权限执行此操作。
2024-08-05 18:21:12
715
原创 LINUX进程间的通信(IPC)--信号
信号通信,其实就是内核向用户空间进程发送信号,只有内核才能发信号,用户空间进程不能发送信号。信号已经是存在内核中的了,不需要用户自己创建。信号通信的框架* 信号的发送(发送信号进程):killraisealarm* 信号的接收(接收信号进程) : pause()sleepwhile(1)* 信号的处理(接收信号进程) :signal二、相关函数所需头文件:函数原型:参数:函数传入值:pid正数:要接收信号的进程的进程号0:信号被发送到所有和pid进程在同一个进程组的进程。
2024-07-30 23:52:51
847
原创 LINUX进程间的通信--共享内存
共享内存(Shared Memory)就是允许多个进程访问同一个内存空间,是在多个进程之间共享和传递数据最高效的方式。操作系统将不同进程之间共享内存安排为同一段物理内存,进程可以将共享内存连接到它们自己的地址空间中,如果某个进程修改了共享内存中的数据,其它的进程读到的数据也将会改变。IPC_STAT (获取对象属性。IPC_RMID (删除对象。IPC_PRIVATE(key值会是0)把共享内存连接映射到当前进程的地址空间。共享内存和管道不一样,读取后,要操作的共享内存标识符。要操作的共享内存标识符。
2024-07-30 01:56:31
578
原创 LINUX进程间的通信(IPC)--消息队列
一、概念一、概念消息队列,是消息的链表,存放在内核中,一个消息队列由一个标识符(队列ID)来标识。二、特点*消息队列是面向记录的,其中的消息*消息队列独立于发送和接收进程,进程终止时,*消息队列可以实现消息的随机查询,消息不。
2024-07-29 15:54:59
658
原创 进程间的通信(IPC)--管道
1.进程间通信常用的方式1.进程间通信常用的方式1,管道通信:有名管道,无名管道2,信号系统开销小3,消息队列内核的链表4,信号量计数器5,共享内存6,内存映射7,套接字2.管道的概念2.1本质*内核缓冲区*伪文件不占用磁盘空间2.2特点*两部分: 读端,写端,对应两个文件描述符 ,分别是数据写端流入,读端流出*操作管理的进程被销毁之后,管道自动被释放*管道默认是阻塞的*内部实现方式:队列 ,环形队列*特点:先进先出。
2024-07-28 20:57:19
717
原创 LINUX 孤儿进程和僵尸进程
一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作为了释放子进程的占用的系统资源: 进程结束之后,能够释放用户区空间 ,释放不了PCB,必须由父进程释放一个进程使用 fork 创建子进程,如果子进程退出,而父进程并没有调用 wait 或获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵死进程。函数作用:1.阻塞并等待子进程退出2.回收子进程残留资源3.
2024-07-26 19:05:23
709
原创 LINUX -exec函数族
让父子进程来执行不相干的操作*能够替换进程地址空间的代码.text段*执行另外的程序,不需要创建额外的的地址空间*当前程序中调用另外一个应用程序2、执行目录下的程序:*指定执行目录下的程序 int execl(const char *path, const char *arg, ... /* (char *) NULL */);参数功能:/* path : 要执行程序的路径(最好是绝对路径)变参arg : 要执行的程序需要的参数 第一位arg: 占位(一般与程序名一样)
2024-07-25 18:00:33
457
原创 linux kill和PS命令的使用
当处理当前进程时,不限制命令名和进程号的对应关系;显示现行终端机下的所有程序,包括其他用户的程序。,可将指定程序终止。若仍无法终止该程序,可使用。命令只打印相关进程的进程号,而不发送任何信号;信息尝试强制删除程序。程序或工作的编号可利用。可将指定的信息送至程序。以用户为主的格式来显示程序状况。显示所有程序,不以终端机来区分。功能:向指定的进程发送信号。参数会列出全部的信息名称;:指定要送出的信息;
2024-07-25 10:03:14
242
原创 进程和线程,并行与并发
进程是计算机中运行的程序的实例。当一个程序被执行时,操作系统会为其分配一定的资源,包括内存、处理器时间和文件描述符等。这个运行中的程序实例就被称为进程。每个进程都有自己的地址空间,使其能够独立地访问内存中的数据。进程还包含了程序计数器(用于指示当前执行的指令)、堆栈(用于存储局部变量和函数调用信息)和文件描述符表(用于管理打开的文件)等信息。操作系统通过调度算法来决定哪些进程在给定时刻执行,并为每个进程分配时间片(处理器时间的一小段)。进程可以在运行过程中被挂起、暂停、恢复和终止。
2024-07-25 00:28:15
855
原创 LINUX静态库和动态库
Linux操作系统支持的函数库分为:静态库,libxxx.a在编译时就将库编译进可执行程序中。优点:程序的中不需要外部的函数库。缺点:可执行程序大2.动态库又称共享库,libxxx.so在运行时将库加载到可执行程序中。优点:可执行程序小。缺点:程序的中必须提供相应的库。3.静态库的创建1.生成目标文件:2.静态函数库创建命令ar‐c: create的意思的意思,表示当插入的模块file.o已经存在libfile.a中,则覆盖。反之ar显示一个错误消息。
2024-07-24 22:19:46
765
原创 RS485
MODBUS协议是Modicon公司发表的一种串行通信协议,属于OSI模型中应用层的协议,现广泛应用于工业控制领域,它的主要特点是免费开放、支持多种电气接口(如RS-232、RS-485),传输介质可以是双绞线、光纤、无线等。通信的发起端只能是主机,从机负责响应主机的请求,也就是说从机的通信都是被动的,它不会主动对主机发起通信;主机没有地址主机对从机发起通信的模式有两种:主机指定特定的子机地址(1~247),子机接到主机的请求后,向主机返回一个报文作为响应;
2024-06-02 22:15:56
1641
原创 TCP/IP(网络编程)
*网络接口层和物理层的作用:屏蔽硬件的差异,通过底层的驱动,会提供统一的接口,供网络层使用*网络层的作用:实现端到端的传输*传输层:数据应该交给哪一个任务去处理*应用层:包含各种协议网络接口与物理层:MAC地址:48位全球唯一的,网络设备的身份标识符ARP/RARP协议ARP :IP地址----->MAC地址(通过IP地址找到MAC地址)RARP:MAC地址---->IP地址(通过MAC地址找到IP地址)PPP协议:拨号协议(3G/4/GPRS)网络层:传输层:应用层:例:A主机向B主机传输数据客户方的FT
2024-06-01 17:29:27
475
原创 STM32——定时器
定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断*16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时*不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能*根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。
2024-05-28 17:33:25
1180
原创 STM32——DMA
DMA(Direct Memory Access)直接存储器存取*DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。*DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了*CPU的资源*12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道) 每个通道都支持软件触发和特定的硬件触发*STM32F103C8T6 DMA资源:DMA1(7个通道)
2024-05-28 14:29:28
671
原创 STM32--ADC
ADC(Analog-Digital Converter)模拟-数字转换器*ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁*12位逐次逼近型ADC,1us转换时间*输入电压范围:0~3.3V,转换结果范围:0~4095(12位转换分辨率)*18个输入通道,可测量16个外部和2个内部信号源(在任意多个通道上以任意顺序进行的一系列转换构成成组转换(规则通道例如,可以如下顺序完成转换:通道3、通道8、通道2、通道0、通道2、通道2。
2024-05-28 11:09:17
1041
原创 STM32——GPIO(模式)
GPIO(General Purpose Input Output)通用输入输出口*可配置为8种输入输出模式*引脚电平:0V~3.3V,部分引脚可容忍5V*输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等*输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
2024-05-27 10:21:32
837
原创 IIC通信(STM32)
ps:指定地址读主机先发送设备地址进行寻址,从机应答之后,主机继续发送指定写的地址,从机应答后,主机会继续产生一个起始条件,之后先从机发送设备地址进行寻址,从机应答之后,主机再进行读取数据(SDA的控制权在从机),主机读取到数据之后再进行应答(SDA的控制权回到主机),最后主机产生一个终止条件。PS:主机释放SDA控制权和从机获得SDA控制权的时间几乎在同一时刻,主机释放SDA,让SDA自动的回到高电平,但是如果从机应答了,从机会抓住SDA不放(这样就产生应答了),反之,从机发送数据需要主机应答也是一样。
2024-05-26 18:04:11
1135
原创 SPI通信(STM32)
SPI通信最终的原理是主机与从机的字节交换,当主机没有数据给从机(主机只接收),而主机又需要从机的数据,主机就可以写一个垃圾数据(0XFF、0X00)给从机,就可以把主机想要的从机数据置换过来。由于SCK第一个边沿就要采样数据,那么从机和主机应该提前把数据移出来,所以在SS下降沿的时候主机和从机就移出数据了,如果一个字节交换结束之后还要继续交换数据,SCK的最后一个下降沿就会移出第二字节的最高位数据,如果主机和从机不继续交换数据,主机和从机的最高位也会冒一个头。
2024-05-25 22:51:33
598
原创 USART串口通信(stm32)
例发送:给TDR写入一个0X55(0101 0101)数据,此时硬件检测到写入数据了(数据在发送数据寄存器),就会检查移位寄存器是否有别的数据在移位,如果没有0x55就会整体全部进入移位数据寄存器,当数据从TDR数据寄存器进入移位寄存器时,会置一个TXE(TX Empty发送数据寄存器空)的标志位,如果标志位是1,则说明发送数据寄存器为空,可以向发送数据寄存器继续写入数据。移位数据寄存器有数据时,在发送控制器的驱动下,将数据发送到TX。数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行。
2024-05-25 20:04:08
953
原创 基于stm32智慧分拣系统
智慧分拣是为了实现垃圾分类更方便、更具体,也便捷人们丢垃圾。该分拣系统有厨余垃圾桶,有害垃圾桶、可回收垃圾桶。该系统具有当人员靠经垃圾桶时、就会打开对应的垃圾桶,该功能具有一定的人性化。当对应说出垃圾名称,分拣系统就会打开对应的垃圾桶,实现 垃圾分类。分拣系统也还具有,自我消毒的模式,这样能减少垃圾桶中细菌的滋生。分拣系统执行的动作,也会传输到蓝牙端、这样便于管理人员管理。
2024-04-05 14:16:33
558
原创 工厂模式---FTP云盘项目
一.云盘概述二.命令介绍(1)服务器命令介绍(2)客户端命令介绍三.FTP框架(1)服务端命令工厂操作函数主函数socket函数(2)客户端命令工厂操作函数主函数socket函数四.函数的解释一.云盘概述FTP服务器(File Transfer ProtocolServer)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP是File Transfer Protoco(文件传输协议)。
2023-11-12 13:52:12
116
原创 树莓派控制DH11(温湿度传感器)
总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必 须大于18毫秒,保证DHT11能检测到起始信号。总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉 高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定 了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有 响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线 50us,随后总线由上拉电阻拉高进入空闲状态。
2023-11-03 18:10:39
870
原创 树莓派硬件pwm(控制舵机)
***digitawrite(int pin,int num) num是步长 来设置占空比(50为舵机旋转角度为零,100为45度,可能50不会是0,舵机有一定的误差)输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,****占空比是一个高电平与一个周期的比例。4、设置pwm的range;
2023-10-29 22:35:06
1178
原创 C语言libcurl库
option` 是要设置的选项,可以是一些预定义的常量,如 `CURLOPT_URL`、`CURLOPT_HTTPHEADER` 等;注意:虽然libcurl是线程安全的,但curl_global_init是不能保证线程安全的,所以不要在每个线程中都调用curl_global_init,应该将该函数的调用放在主线程中。如果这个函数在curl_easy_init函数调用时还没调用,它讲由libcurl库自动调用,所以多线程下最好主动调用该函数以防止在线程中curl_easy_init时多次调用。
2023-10-26 22:58:37
200
原创 网络编程 —FTP云盘项目
FTP服务器(File Transfer ProtocolServer)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP是File Transfer Protoco(文件传输协议)。程序运行,服务端不断接收客户端指令,服务端可同时处理多个客户端接入并对指令作出解析,并把执行结果返回给客户端,客户端根据服务端对指令的解析并把由服务端传递过来的处理信息通过客户端呈现给客户,实现文件的各种操作。
2023-09-01 18:04:59
140
原创 网络编程(sqlite3编程接口API操作)———增删改查
callback:回调函数,只有sql为查询语句的时候,才会执行此语句。- 基本的sql命令,不以 . 开头,但是都要;- 3.将新的表的名字改成原有的表名字。- resultp:用来指向sql执行结果的指针。- 成功返回0,失败返回错误码(非0值)- f_value:包含每个字段值的指针数组。- f_name:包含每个字段名称的指针数组。- ncolumn:每条记录包含的字段数目。- 返回值:成功返回0,失败返回错误码。- f_num:记录中包含的字段数目。- 返回值,成功返回0,失败返回-1。
2023-08-23 17:24:25
153
原创 网络编程——嵌入式数据库(sqlite)
Oracle公司是最早开发关系数据库的厂商之一,其技术支持最广泛的操作系统平台。- SQLite的源码是C语言,其源代码完全开发,SQLite第一个Alpha版本诞生于2000年5月,他是一个轻量级的嵌入式数据库。- mySQL是一个小型关系数据库管理系统,开发爱着为瑞典MySQL AB公司,2008年被Sun公司收购,开放源码。- IBM 的 DB2是第一个具备网上功能的多媒体关系数据库管理系统,支持包linux在内的一系列平台。- Server是微软开发的数据库产品,主要支持windows平台。
2023-08-19 22:32:31
127
原创 TCP三次握手,四次挥手
7.第四步(客户端确认关闭):客户端收到服务器的结束通知后,发送一个带有 ACK(确认)标志的数据包给服务器,表示客户端确认收到服务器的关闭请求。3.第三步(客户端确认请求):客户端收到服务器的确认后,会发送一个带有 ACK(确认)标志的数据包给服务器,确认连接已建立。6.第三步(服务器发送数据完成):服务器将其需要发送的数据发送完毕后,会发送一个带有 FIN(结束)标志的数据包给客户端,表示服务器的数据发送完成。这样,通过TCP的三次握手和四次挥手,可以确保可靠地建立和关闭连接,并保证数据的可靠传输。
2023-08-19 17:03:38
40
原创 网路编程(TCP多进程)
signal()函数是一个用于信号处理的POSIX标准C函数,原型定义在头文件<signal.h>中,用于向操作系统注册信号处理函数。函数指针的返回类型为void,参数为int类型。也就是说,当信号被捕捉时,该函数会被调用,并传入信号编号作为参数。SIGCHLD,在一个进程终止或者停止时,将SIGCHLD信号发送给其父进程,按系统默认将忽略此信号,如果。第二个参数是一个函数指针,指向一个函数,这个函数在信号被捕捉时调用。希望被告知其子系统的这种状态,则应捕捉此信号。第一个参数是一个整数,用于指定信号编号;
2023-08-11 19:17:16
41
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人