自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络编程核心函数

【代码】网络编程核心函数。

2024-09-01 23:13:04 1387

原创 Linux 进程与线程相关函数及进程间通信方法

这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回,如果调用出错则返回 -1。:定时由系统给当前进程发送信号,也称为闹钟函数。:进程暂停,不再继续执行,除非收到其他信号。

2024-09-01 23:00:42 1409

原创 Linux 文件操作相关函数整理

【代码】Linux 文件操作相关函数整理。

2024-09-01 22:46:08 788

原创 汇编语言的学习

【代码】汇编语言的学习。

2024-09-27 09:43:04 445

原创 交叉编译器的选择

选择适合不同 ARM 开发板的编译器需要综合考虑开发板的特性、编译器的功能和性能、以及长期支持等因素。通过了解开发板的需求、查阅文档和进行测试,可以选择一个最适合的编译器,以提高开发效率和代码质量。

2024-09-21 20:15:00 783

原创 将sqlite3移植到arm开发板上:

下载:sqlite-autoconf-3460100.tar.gz。

2024-09-21 16:36:15 1155

原创 网络编程问题解答

服务器接收到请求后,会根据源 IP 地址和源端口号(客户端的端口号)以及目标 IP 地址和目标端口号(服务器的端口号)来确定与哪个客户端进行通信,并将响应数据发送回客户端的相应端口号。实现多路复用和分解:在传输层,如 TCP 和 UDP 协议中,端口号用于将来自不同应用程序的数据进行多路复用,即将多个应用程序的数据封装在同一个 IP 数据包中进行传输。:由于不同的网络可能具有不同的最大传输单元(MTU),当数据包的大小超过网络的 MTU 时,网络层需要将数据包分割成较小的片段进行传输。

2024-09-20 21:51:58 1747

原创 进程和线程问题解答

进程状态的切换有哪几种?

2024-09-20 19:55:09 806

原创 Ubuntu 64系统信息查看

显示系统内核名称、主机名、内核版本号、发布日期等信息。GNU/Linux内核版本:这是一个基于 Linux 的 Ubuntu 系统,其内核版本为 5.4.0 - 150 - generic。内核负责管理系统的硬件资源并为软件提供运行环境。

2024-09-20 13:56:14 1106

原创 嵌入式学习——数据结构——顺序表

线性表的定义

2024-09-09 21:53:06 738

原创 嵌入式学习——数据结构

【代码】嵌入式学习——数据结构。

2024-09-09 21:36:46 1011

原创 HTML 基础知识详解与代码示例

用于输出一些特殊的字符,因为有些特殊字符不能直接在网页中显示。默认情况下打开新网页时老网页会关闭,可使用。用于传递参数和数据,使用。

2024-09-05 21:31:46 1327

原创 数据库编程——sqlite3

q.help.database.tablesxxxtestxxx.db这里的 > :表示输出重定向 < :表示输入重定向。

2024-09-04 21:28:23 2038

原创 UDP广播、 组播通信

端口为 9999),接收组播消息并打印,然后在消息后添加 "aaa" 再发送回组播组。这段代码实现了一个 UDP 组播发送和接收的程序。它的主要功能是向指定的组播地址(这段代码实现了一个组播接收端程序,它加入指定的组播组(地址为。)发送一条固定的消息,然后等待接收组播消息并打印出来。

2024-09-03 21:27:39 630

原创 TCP 通信程序示例——实现一个服务器连接多个客户端

这段代码实现了一个简单的 TCP 服务器,它在本地回环地址的 50000 端口上监听客户端连接请求。当有客户端连接时,服务器会创建一个子进程来处理与该客户端的通信。子进程会接收客户端发送的数据,并在数据后加上当前时间后发送回客户端。同时,服务器还注册了一个信号处理函数来处理子进程结束的信号,以防止产生僵尸进程。

2024-09-03 21:17:49 1221

原创 嵌入式学习——(Linux高级编程——IPC)

进程间通信(Interprocess Communication,IPC)是指在不同进程之间进行数据交换和信息传递的机制。程序、测试所有 32 个系统信号是否能全部被忽略、编写信号处理函数处理自定义信号 10 和 12、验证信号的反复注册后信号处理流程等。应用于异步通信,如中断处理等。信号编号为 1 到 64,其中 32 个有具体含义的信号可供应用编程。练习题包括编写自己的。

2024-08-24 15:25:26 1135

原创 嵌入式学习——(Linux高级编程——线程控制)

定义了一个互斥锁变量。这个变量将在后续的步骤中被初始化、加锁、解锁和销毁。sem_t sem;定义了一个信号量变量。这个变量将在后续的步骤中被初始化、进行 PV 操作以及销毁。

2024-08-22 21:22:45 1069

原创 嵌入式学习——(Linux高级编程——线程)

POSIX 线程提供了一套用于多线程编程的标准接口。其设计框架主要包括创建多线程、线程空间操作以及线程资源回收等步骤。

2024-08-21 21:50:24 824

原创 嵌入式学习——(Linux高级编程——进程2)

子进程作为父进程的副本,意味着子进程在创建时从父进程处继承了部分资源。具体来说,子进程获得了父进程的数据段、堆、栈和正文段的共享。这种共享使得子进程可以在一定程度上利用父进程已有的资源进行运行,但同时也需要注意资源的正确使用和管理,以避免出现冲突和错误。

2024-08-20 17:35:31 1064

原创 嵌入式学习 ——(Linux高级编程——进程1)

关系可以表示为:最初的进程是根节点,第一次 fork 产生的父子进程是父子关系,第二次 fork 产生的进程对于第一次 fork 产生的父进程来说是父子关系,对于第一次 fork 产生的子进程来说也是父子关系,所以存在孙进程。系统通过 PCB 块(进程控制块,如 task_struct 结构体)来控制进程,其中包含 PID(进程标识符)、cwd(当前工作路径)、用户 ID、组 ID 等信息,还记录了进程打开的文件列表、信号相关设置以及进程资源的上限等。他们之间的关系如何表示,有多少个子进程,有没有孙进程?

2024-08-19 22:07:52 1094

原创 阶段练习——minishell

一、项目概述本项目是一个使用 C 语言编写的程序,其目的是模拟常见的文件操作命令,为用户提供类似于在操作系统中执行基本文件操作的功能。这些功能包括文件的复制、内容查看、目录切换、目录内容的列出(包括简单列出和详细列出)、创建符号链接和硬链接、文件的删除、创建空文件以及文件的移动等。二、功能模块设计。

2024-08-18 23:54:56 1164

原创 嵌入式学习 20(Linux高级编程——文件——misc)

功能:创建一个指向 oldpath 文件的新的符号链接(软链接)文件。参数:• oldpath:被链接指向的原始文件的路径。• newpath:新创建的符号链接文件的路径。返回值:• 成功时,返回 0。• 失败时,返回 -1。

2024-08-15 22:09:47 1086

原创 嵌入式学习 20(Linux高级编程——文件IO)

目录操作目录的操作步骤:打开目录--->读取目录--->关闭目录功能:用于打开一个目录,并获取一个与之相关的目录流指针。参数:name:要打开的目录的名称。返回值:• 成功时,返回指向目录流的指针。• 失败时,返回 NULL。功能:从指定的目录流中读取文件或子目录的信息,并返回一个包含这些信息的结构体的地址。参数:dirp:目录流指针。返回值:• 成功时,返回一个指向包含文件信息的 struct dirent 结构体的指针。• 出错或者读到目录流末尾时,返回 NULL。

2024-08-14 22:11:52 1189

原创 嵌入式学习 19(Linux高级编程——文件——文件IO)

fseek()

2024-08-13 21:28:42 1143

原创 嵌入式学习 18(Linux高级编程——文件- 标准IO)

Linux中一切都是文件。学习使用man指令查询函数功能。

2024-08-12 22:15:03 1282

原创 嵌入式学习之路 17(C语言基础学习——结构体、共用体、枚举、位运算)

结构体初始化:看每个成员变量具体是什么数据类型,根据各个成员变量自身的数据类型进行初始化,初始化的顺序,按照定义的顺序依次初始化。表示要描述的复杂数据中用到的具体的成员变量,定义的方式与之前变量的方式相同,多个成员变量之间用分号隔开。结构体类型(构造类型——用户自定义类型):用来描述复杂数据的一种数据类型。结构体变量的引用:(结构体数据引用时,一般是引用到具体的成员数据)结构体类型的使用的过程:先定义出类型,定义变量。定义变量的语法:struct 结构体名 变量名;printf()……(结构体成员运算符)

2024-08-09 22:06:01 329

原创 嵌入式学习之路 16(C语言基础学习——指针操作二维数组、指向函数的指针、指针的指针)

p指向了二维数组a的首地址,其基类型是int[3]。3、通过指针访问二维数组元素*p相当于a[0],即指向二维数组的第一行(内部的一维数组)。(*p)[0]表示第一行的第一个元素,等同于a[0][0]。*(*p + 0)也表示第一行的第一个元素。*(*(p + 1) + 1)相当于a[1][1],即指向二维数组的第二行的第二个元素。一般地,

2024-08-08 20:20:27 1380

原创 嵌入式学习之路 15(C语言基础学习——指针操作一维字符型数组)

字符型数组的定义和初始化。

2024-08-07 22:03:19 486

原创 嵌入式学习之路 14(C语言基础学习——指针操作一维整型数组)

语法:基类型 * 指针变量名。基类型可以是之前学过的各种数据类型,如整型、浮点型、字符型、结构体类型、函数类型等,它表示指针所指向的内存空间能够存放的数据类型。例如:int *p;中,p就是一个指向整型数据的指针变量。*在定义时表示定义的是指针类型的变量。指针变量名需符合标识符命名规则。

2024-08-06 20:05:27 1038

原创 嵌入式学习之路 13(C语言基础学习——预处理命令)

在进行程序开发时,通常遵循编辑源代码、编译、运行和调试这几个主要步骤。

2024-08-05 20:42:09 953

原创 嵌入式学习之路 12 (C语言基础学习 —— 一维、二维数组做函数参数)

二维字符型数组用来存储多个字符串,操作时往往都是要操作多个字符串,而多个字符串没有所谓的结束标志,看的是数组行数。一位字符串数组主要用来存放字符串数据,而字符串数据有结束标志,所以传参时不需要传长度。因为处理的是字符串数据,字符串操作的依据是看结束标志'\0',所以不需要传数组长度。练习:对一维字符型数组做函数参数的操作。练习:对一维整型数组做函数参数的操作。练习:对二维整型数组做函数参数的操作。练习:对二维字符型数组做函数参数的操作。做形参要写数组形式+行数;做实参要写数组名+行数;

2024-08-03 17:59:29 809

原创 嵌入式学习之路 11(C语言基础学习——函数)

1.main函数之前:2.main函数之后:需要在调用函数之前声明该函数,函数头+分号 就是函数声明类型标识符 函数名(形式参数)函数体代码;表示函数要带出的结果的类型,既返回值的数据类型。注意:1、数组类型也是数据类型,但这里不能用数组类型来表示返回值的类型。2、如果函数不需要带出什么结果,此时返回结果的类型说明符一般设计为void。如果类型为void,一般不写return。3、如果返回结果的类型与类型说明符不一致,以类型说明符为准,最终结果的类型都会转为类型说明符表示的类型。

2024-08-02 21:50:06 1014

原创 嵌入式学习之路 10 (C语言基础学习——二维字符型数组)

这里定义了一个5行10列的二维字符型数组,表示可以存放5个长度小于10的字符串,一行存放一个字符串。(定义几行就表示能存几个字符串,几列就表示能存多长的字符串)a[ 0 ]就是第0行的首地址,这里表示从键盘输入一个字符串到这个二维字符型数组的第0行。二维字符型数组可以存放多个字符串,可以批量操作字符串。

2024-08-01 22:20:45 480

原创 嵌入式学习之路 9 (C语言基础学习——一维字符型数组)

一维字符型数组就是数据类型为char的,用来存放字符串的数组定义:数据类型 数组名[ 数组长度 ];"hello"'\0'"hello"'\0'""'\0'例如,如果要判断一个字符串是否结束,就可以通过查找'\0'来确定。又如,在遍历一个字符数组表示的字符串时,遇到'\0'就知道字符串结束了。再比如,在为字符数组赋值字符串时,系统会自动在末尾添加'\0'。

2024-07-31 22:00:19 255

原创 嵌入式学习之路 8(C语言基础学习——算法)

每次都从未排序部分选择最小(或最大)的元素,并与相应位置的元素交换,直到整个数组排序完成。可以先将数组的第一个元素理解为擂主第一层for循环就是确定哪个元素作为擂主,i就是擂主,但len个元素只需要进行len-1次对打,所以只需要确定len-1个擂主就可以。第二层循环是确定哪个元素作为对手,擂主的下一个元素就是对手,所以j=i+1是对手,除了擂主以外的全部元素都要跟擂主对打,所以对手的范围就是i+1~len。前面已经作过擂主的元素已经确定好了位置,所以就不需要再与后面的元素进行比较。

2024-07-30 22:20:20 818

原创 嵌入式学习之路 7(C语言基础学习——数组)

数组是一组相同类型数据的集合,也是一组相同类型变量的集合,同时数组本身也是一种数据类型。在需要定义多个相同类型的产量时,按照以往的方法一个一个定义就相当繁琐,而数组可以批量处理多个数据。

2024-07-29 21:07:36 374

原创 嵌入式学习之路 6(C语言基础学习——循环控制)

进入for循环后,首先求解表达式1,(判断表达式2,为真则执行循环体语句,执行后求解表达式3,求解后继续判断表达式2。do-while是先执行语句,再判断表达式,为真则继续执行语句,然后再判断,重复这个过程,直到表达式判断为假,do-while结束。break语句可用在switch和循环(while,do-while,for)中,其作用是在循环中表示跳出本层循环。continue语句只用在循环中,其作用是结束本次循环,继续下一次循环。3. 循环体:反复被执行的代码,这是循环中要重复执行的语句或语句块。

2024-07-29 20:13:37 430

原创 嵌入式学习之路 5(C语言基础学习——流程控制)

流程控制是计算机编程中的一个重要概念,用于管理程序执行的顺序和方式。常见的流程控制结构包括(如 if-else 语句、switch 语句)和(如 for 循环、while 循环、do-while 循环)。任何一个程序,都可以由这三个结构组合而成。今天在学习流程控制之前,我们先学习了关系运算和逻辑运算。在 C 语言中,关系运算和逻辑运算在流程控制中起着关键的作用,1、可以通过关系运算和逻辑运算的结果来决定程序的执行分支。2、决定循环是否继续执行。3、可以使用逻辑运算符(&&、||、!

2024-07-28 14:21:36 1317

原创 嵌入式学习之路 4 (C语言基础学习——输入输出函数)

其功能是从键盘获取一个字符,返回值表示获取到的字符的ASCII码值,函数原型中的void表示使用时不需要给实参。此时ret中的值就是获取到的字符的ASCII码值。

2024-07-26 20:36:46 971

原创 嵌入式学习之路 3

C允许用一种特殊形式的字符常量,就是以一个字符 "\"开头的字符序列。例如,前面已经遇到过的,在 printf函数中的"\ n"' 它代表一个“换 行”符。这是一种“控制字符"'在屏幕上是不能显示的,在程序中也无法用一个一般形式 的字符表示,只能采用特殊形式来表示。表中列出的字符称为“转义字符”,意思是将反斜杠"\"后面的字符转换成另外的意义。:输出 abc ij#k ( \t 制表符使 ij#k 向右移动8个字符的位置, \n 换行)

2024-07-25 21:19:29 714

空空如也

空空如也

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

TA关注的人

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