概述 突然发现人们总是对未知的东西保持着新鲜感,当初建站的时候一直很兴奋,一天到晚研究服务器、研究域名、研究怎么美化,老是想着搭建自己的博客之后要干很多很多事,时间过去几个月我都快忘了它的存在了。前段时间做了个单片机的项目,采用STM32U575RIT6 MCU搭配温湿度传感器和ESP8266模块实现室内的温湿度控制和数据上…
概述 距离上一次更新还是在上一次,这段时间一直在学习网络相关的知识。这次带来的小项目是一个基于Modbus、TCP、HTTP协议的设备数据采集和控制程序,可以实现类似智能家居的效果,实时采集温湿度和控制设备功能的开关,但是硬件知识还没有学习,只能用软件工具来模拟硬件。 实现原理 这里贴一张我们老师画的图,原理就是采集控制程序会不断读取设备存放温湿度…
标准IO函数 打开文件 1.fopen() #include <stdio.h> 定义: FILE *fopen(const char *filename, const char *mode); 功能: 打开一个文件,并返回一个指向该文件的指针(文件流)。 参数: filename:要打开的文件名。 mode:打开模式,可以是“r”、“…
通信方式 1.无名管道 2.有名管道 3.信号 4.共享内存 5.消息队列 6.信号灯集 7.套接字 无名管道 特点 1.只能在具有亲缘关系的进程间通信 2.半双工的通信方式,具有固定的读端fd[0]和写端fd[1] 3.管道可以看成是一种特殊的文件,对于它的读写可以使用文件IO如read、write函数. 4.管道是基于文件描述符的通信方式。当一…
线程同步 概念 线程同步是指多个线程在同一时间访问同一资源时,为了保证数据的正确性和一致性,需要对线程的执行顺序进行控制,以保证数据的完整性和正确性。 信号量 信号量的概念 信号量是一个非负整数,其值代表系统中某一资源可供使用的数量,由信号量决定线程是继续执行还是阻塞等待。 信号量是一个受保护的值,只能通过三种方式来访问:初始化、P操作(申请资源)…
线程的概念 线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空间和文件描述符,但每个线程有自己的栈和寄存器状态。 进程和线程的异同 相同点: 都为系统提供并发执行的能力 不同点: 资源和调度:进程是系统资源分配的最小单位,线程是资源调度的最…
创建进程 fork() 定义: pid_t fork(void); 功能: 在当前的进程中,创建一个子进程 返回值: 成功: 在父进程中:返回子进程的进程号(>0) 在子进程中:返回值为0 失败:-1,并设置errno 特点 1.子进程几乎拷贝了父进程的全部内容。包括代码、数据、系统数据段中的pc值、栈中的数据、父进程中打开的文件等;但它们的…
程序和进程区别 程序: 编译好的可执行文件; 存放在磁盘上的指令和数据的有序集合; 程序是静态的,没有任何执行概念。 进程: 一个独立的可调度的任务; 执行一个程序所分配的资源的总称; 进程是程序的一次执行过程; 进程是动态的,包括创建、调度、执行、消亡。 进程特点 1.系统会为每个进程分配0-4g的虚拟空间,其中0-3g是用户空间,每个进程独有;…
库的定义 库就是把常用的函数的目标文件打包在一起,提供函数调用的接口,以便后续的使用或者发布,库的本质是可执行程序的二进制形式。 在不同的操作系统中,库不可兼容,在Linux的平台下,静态库文件的后缀是 .a ,动态库的后缀是 .so;在window的平台下,静态库文件的后缀是 .lib ,动态库的后缀是 .dll。 在Linux操作系统中,库文件…
概念 在posix(可移植操作系统接口)中定义的一组输入输出的函数 特点 1.没有缓冲机制,每次操作都会经过系统调用,效率较低 2.围绕文件描述符来操作,0(标准输入)、1(标准输出)、2(标准错误)、...... 3.默认打开0、1、2 4.除目录外其他任意类型文件都可以操作 函数 打开文件 open 定义: int open(const cha…