- 博客(35)
- 问答 (3)
- 收藏
- 关注
原创 linux驱动
4..安装nfs服务,并配置nfs服务目录,拷贝rootfs到nfs目录下(拷贝rootfs.tar.gz到nfs服务目录下并解压,使用命令+sudo)1.系统上电后,直接执行norflash中(norflash被接在o地址处)的bootloader程序,bootloader向内核传参,通过。3.根文件系统被挂载完成后,内核会启动根文件系统中的init进程进一步启动shell及用户程序。注------>文件系统:按照特定方式组织的文件的集合。(内核中的init进程退化为用户可视的init进程(1号进程))
2025-08-23 09:15:19
547
原创 sqlite3学习---基础知识、增删改查和排序和限制、打开执行关闭函数
sqlite> insert into user3 (NULL,'李四',23,datetime('now'));///删除id=1 的数据;2)create table 表名 (表字段 类型,表字段 类型,。打开指定path路径+文件名称的数据库,并将打开的地址指向db变量的句柄。===>用sqlite3 来打开一个名称为test.db的本地数据库。1)create table 表名(表字段1,表字段2,...);打开数据库 ==》读写数据库(增,删,改,查) ==》关闭数据库。
2025-07-28 19:30:45
826
原创 IPC 进程间通信 interprocess communicate---有名管道、无名管道
==》pipe ==》只能给有亲缘关系进程通信。===》fifo ==》可以给任意单机进程通信。sig 当前程序要发送的信号编号 《=== kill -l。写端是存在的,读管道,如果管道为空的话,读会阻塞。2)无名管道的读写:===》文件IO的读写方式。创建有名管道 ==》打开有名管道 ==》读写管道。pipefd[0] ==>无名管道的固定读端。
2025-07-22 11:26:36
699
原创 线程学习day1---基础知识+pthread_create、self、exit、cancle、join
线程的回收机制 ====》不同与进程没有孤儿线程和僵尸线程。====》主线程结束任意生成的子线程都会结束。====》子线程的结束不会影响主线程的运行。传整数 ---------》int add(int a,int b);1)如果预估子线程可以有限范围内结束则正常用pthread_join等待回收。retval 要回收的子线程返回值/状态。阻塞等待功能,如果指定的线程没有结束,则回收线程会阻塞。创建多线程 --->线程空间操作 --->线程资源回收。5)线程id是线程的唯一标识,是CPU维护的一组数字。
2025-07-16 19:58:01
1010
原创 进程---基础知识+命令+函数(fork+getpid+exit+wait+exec)
进程是一个程序执行的过程,会去分配内存资源,cpu的调度用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。
2025-07-14 19:36:50
815
原创 数据结构学习day5---散列表+内核链表
哈希表通过键 key和映射函数 Hash(key) 计算出对应的值 value,把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数(散列函数),存放记录的数组叫做哈希表(散列表)。内核链表是一种线性数据结构,其中每个节点包含了数据元素本身以及指向下一个节点的指针。在Linux内核中,这种链表通常被实现为双向链表或循环链表,以支持更高效的插入、删除和遍历操作。
2025-07-08 17:38:19
318
原创 数据结构学习day9---文件io+open、write、read、lseek、fileno、fdopen
O_EXCL,需要和O_CREAT同时使用,表示新建的文件不能存在,成功,否则open就会失败。offset:偏移量,以字节为单位,用于指定从参考点(由whence参数指定)开始移动的距离。SEEK_CUR:从当前文件位置开始计算偏移量。O_ASYNC异步io,什么时候io不确定,一个基于Linux内核的没有缓存的IO机制。内核每打开一个文件就会获得一个文件 描述符。fd:文件描述符,用于指定要操作的文件。通过文件描述符向文件中写一串数据。获得一个文件流指针中的文件描述符。通过文件描述符读取文件中的数据。
2025-07-08 16:19:35
873
原创 数据结构学习day8---strstr+symlink+remove+rename+link+truncate
找到后,按如下格式输出 #define PI 3.14 /home/linux/1.h 25 -----宏的内容 文件名 行号。在一个字符串haystack中查找另一个字符串needle的第一次出现,并返回该位置的指针,如果找不到,则返回NULL。输入一个文件名 *.h 找文件中,所有的#define。创建一个链接向oldpath文件的新符号链接文件。链接文件:file.txt -> hello.c。pathname:删除文件的路径。oldpath:要链接向的文件。软链接文件、符号链接文件。
2025-07-03 19:40:12
335
原创 数据结构学习day7---strtok
当strtok()在参数str的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数str字符串,往后的调用则将参数str设置成NULL。4.1将zhangsan:18:188:成都以zhangsan_18_188_成都的形式输出。4.2访问proc中的文件 输出文件中第一、3、6行的内容:name、state、pid。分隔符指针 (可以是一个或多个分割符)成功 指向被分割出片段的指针。
2025-07-03 09:28:09
138
原创 数据结构学习day6---流+读写函数+缓冲+定位函数(fseek、ftell、rewind)
数据从文件当中流入和流出所体现出来的字节流叫做流。
2025-07-01 20:42:54
993
原创 数据结构学习day4---栈+队列+树
队列是只允许在一段进行插入,而在另一端进行删除操作的线性表。允许插入的称谓队尾,允许删除的一端队头。顺序队列。循环队列,n(n>=0)个结点的有限集合。n =0,空树。n个结点的有限集合,集合要么为空树,要么由一个根结点和两棵互不相交,分别称谓根结点的左子树和右子树的二叉树组成。。
2025-06-30 16:11:46
548
原创 数据结构学习day3----gdb
下一步,步入,如果函数,进入函数。(只进入自定义函数,不进入系统函数)2.3b fun.c:36 设置断点,运行到这个位置,程序自动暂停。b 170 mainn函数 . c中第170设置断点。设置断点----程序走到那里就会自动停下来。和p相似,一直显示变量display a;用于跳出循环,在循环后面设置断点,然后按c。2.6 使用p命令,查看变量或指针等数据。下一步,步过,如果是函数,直接调用结束。display是敲一次就一直显示。显示茂结构,函数的调用关系。--->代码直接运行。
2025-06-26 14:05:06
217
原创 数据结构学习day1-----基础知识+顺序表
相互之间存在一种或多种特定关系的数据元素的集合。是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。是解决特定问题求解步骤的描述,计算机中表现为指令的有限序列,每条指令表示一个或多个操作。零个或多个数据元素的有限序列元素之间是有顺序了。如果存在多个元素,第一个元素无前驱,最有一个没有后继,其他的元素只有一个前驱和一个后继。当线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,为空表。在非空的表中每个元素都有一个确定的位置,如果a1是第一个元素,那么an就是第n个元素。
2025-06-24 10:35:47
443
原创 C语言学习day16----共用体+枚举+typedef
1)因为共用体成员变量共用同一块空间2)共用体的大小=成员变量中最大的那个成员大小3)共用体各个成员的起始地址时如果一个变量只有几种可能的值,则可以定义为枚举类型。所谓"枚举"是指将变量的值-一一列举出来, 变量的值只限于列举出来的值的范围内。都可以提供共可读性更好的常量名。
2025-06-18 21:22:39
616
原创 C语言学习day15---指针(四)+结构体
/(理解角度)就是一个指向 int (int a,int b) 这种函数的 一个指针变量。int (*compar)(const void *, const void *) //比较的规则。1)功能:将堆区空间释放 //将之前在用的空间交还给操作系统,告诉操作系统,说这块空间不用了,可以回收。原因,指针类型传参时大小固定,如果是结构体类型变量 --- 变量的大小取决于结构体类型大小。//正确的C语言写法。//int是数据类型的类型名 ---关键字。
2025-06-18 20:50:40
857
原创 C语言学习day14---指针(三)
处理多个字符串------->栈 --可读可写------->数组本身的空间是在栈上的,但是字符串的数据是在字符串常量区。
2025-06-16 21:18:43
769
原创 C语言学习day13---指针(二)
/"hello" ---字符串常量 --- 字符串常量区。//char s[10] //字符型一维数组 --- 空间开 栈上。------如果被调函数中 做的只是读操作 ,没有修改操作。//用字符串常量区中"hello"初始化了栈上s的空间。void * --- 空类型指针 //它的基类型为空 (void) //万能指针。//将字符串常量区中"hello"的地址给到p中。5)char * const s 表示s是只读的,不能被修改 ,s的指向不能被改变。
2025-06-16 19:38:39
568
原创 C语言学习day11----标识符、预处理
3.2.1.1定义:用一个指定的标识符(即名字)来代表一个字符串3.2.1.2语法#define 标识符 字符串#define 宏名 宏值3.2.1.3说明1)宏名-----自己定义一个标识符 (符合标识命名规则),一般建议写成大写以便与区分2)宏值-----表示宏名要代表的值。它本身只是一个文本字符串 (文本信息) 与c语言中字符串常量不是一个概念代码实现经过预处理后的 .i 文件--->3)预处理阶段做的工作文本的原样替换,用宏值替换宏名4)宏定义最后不写分号,除非需要。
2025-06-11 20:28:03
887
原创 C语言学习day10--函数(二)
/a[0] //int型的数据 //变量。printArray(int a[3][4],int row) //正确语法形式。// 实参 给的是 a[3](1).将n-1 个盘子 A(起始)->B(辅助)(3).将n-1 个盘子 B(辅助)->C(目标)(2).将第n 个盘子 A(起始)->C(目标)----> 函数的形参设计为对应类型的一个变量即可。----> 函数的实参,传递对应的数组元素即可。直接 A(起始)->C(目标)n个盘子 A(起始)->C(目标)
2025-06-10 21:35:23
707
原创 C语言学习day7--数组
step2:a数组中从第0位开始插入,顺着到第1位插入,第1位与第0位相比较,小的在前,大的在后,同理,第2位插入,第2位与第1位相比较在换位,然后与第0位相比较在换位。虽然是按照字符数组的方式处理的,但是对于字符串,我们不大关注数组的长度,而更关注的是字符串的长度和整个字符串本身。step1:定义一个数组a[ ]={5,2,6,1,4,7,3,8};插入数组b[8]中。step1:定义一个数组a[ ]={5,2,6,1,4,7,3,8};字符串的长度 ---- '\0' 字符的个数 --- 5个字符。
2025-06-05 21:20:34
481
原创 C语言学习day6--数组
1.1格式:类型说明符 数组名[常量表达式];类型说明符 数组名[常量表达式] //有一个[ ]这种 一维数组类型说明符 数组名[常量表达式][常量表达式];//二维数组注:数组也是一种数据类型1.2有整型和浮点型//定义了一个名叫a,含10个int型变量的数组。
2025-06-04 20:57:21
269
原创 C语言学习day2
以应用为中心(专门的应用场景)、以计算机技术为基础(软件、硬件、CPU、内存、硬盘、输入设备、输出设备)、软件硬件可裁剪(eg:路由器,路由器操作系统 -openwrt )、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
2025-05-28 01:13:08
702
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人