自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 系统编程完结整理以及补充

本文摘要: 本文系统介绍了Shell编程和Linux系统编程的核心知识点。Shell部分涵盖函数定义、变量操作、流程控制、重定向等基础语法;系统编程部分详细讲解了文件操作、进程管理、进程间通信(管道/消息队列/共享内存)和线程同步等关键技术。文章采用表格形式对比各种系统调用函数,包括函数原型、参数说明、返回值和使用场景,并标注了注意事项和常见错误点。内容从基础shell脚本逐步深入到多进程/多线程编程,适合不同层次开发者系统学习Linux环境下的编程技术。

2025-09-14 19:00:00 298

原创 多文件编程与宏的使用

通过将程序拆分为多个源文件(.c)和头文件(.h)实现模块化编程。头文件使用#ifndef/#define/#endif防止重复包含,存放函数声明、宏定义和类型定义;源文件实现具体功能。编译时,源文件生成目标文件后链接为可执行程序。宏处理包括常量定义、函数式替换和条件编译,需注意全局变量声明规范(extern声明在头文件,定义在源文件)。多文件编程提高了代码复用性和可维护性,是现代C项目开发的基础方法。

2025-09-14 08:00:00 773

原创 冒泡排序与选择排序以及单链表与双链表

冒泡排序和选择排序是两种基础的排序算法。冒泡排序通过相邻元素比较交换将最大值"冒泡"到末尾,时间复杂度O(n²),稳定但交换频繁;选择排序每次选择最小值放到已排序区末尾,同样O(n²)但交换次数少,不过不稳定。冒泡排序适合小规模或部分有序数据,可通过标志位优化;选择排序更适合交换成本高的场景。两者均为原地排序(空间复杂度O(1)),但效率较低,仅适用于小规模数据排序。

2025-09-13 19:00:00 1116

原创 结构体与动态内存分配

本文系统介绍了C语言中结构体和动态内存管理的核心知识点。结构体部分涵盖定义、指针操作、指针成员、数组及指针数组的使用方法,重点讲解了通过指针访问成员、构建动态数据结构以及内存管理注意事项。动态内存管理部分详细解析了四大内存区域(代码区、数据区、堆、栈)的特点和访问权限,深入讲解malloc/calloc/realloc/free等动态分配函数的使用场景和风险防范,特别强调内存泄漏、悬空指针等常见问题的解决方案。文章最后总结了动态内存分配的安全使用原则,包括初始化和释放内存的规范操作,

2025-09-13 10:58:54 857

原创 系统编程(九)同步与互斥

多个进程/线程需要使用同一公共资源时,同一时刻可以使用该资源。常见手段:互斥锁(mutex)。场景特点:线程之间“抢”资源,谁拿到谁使用,其他线程阻塞等待。:多个进程/线程之间需要按某种执行(有依赖关系),例如 A 需要等 B 产生数据后才能运行。场景特点:强调,不一定是抢占资源,但往往也会表现为一次只有一个线程进入某段代码(因此同样包含互斥的性质)。关系:同步本质上是一种特殊的互斥(因为很多同步场景也会使得某个时刻只有一个线程能执行特定操作)。

2025-09-12 19:00:00 1796

原创 系统编程(八)线程

程序:存储在磁盘上的代码,本身不执行任何操作。进程:程序运行后的实例,负责分配资源,但不直接执行任务。线程:进程中的执行单元,真正执行具体任务。例子QQ程序是一个进程,本身不执行聊天功能。打开聊天窗口时,产生线程执行通信任务。多进程与多线程多进程:如双开 QQ,两次启动两个独立进程。多线程:一次启动 QQ,可以同时和多人聊天。总结每个进程至少有一个线程 →主线程。线程是轻量级进程 (LWP, Light Weight Process)。在 Linux 下,线程本质上仍是进程。共享资源。

2025-09-12 08:00:00 1553

原创 系统编程 系统编程中的函数原型以及参数解释

本文摘要: 本文系统介绍了Linux系统编程中的核心API函数,涵盖文件操作、进程管理、信号处理、进程间通信、线程控制及同步机制等六大模块。文件操作部分详细说明了open、close、read/write等基础函数;进程管理涉及fork、exec、wait等关键系统调用;信号处理包括kill、signal等函数;进程间通信涵盖管道、消息队列、共享内存三种机制;线程控制部分解析了pthread_create等POSIX线程函数;同步机制重点说明了互斥锁、条件变量等线程同步工具。每个函数均给出参数说明、返回值及

2025-09-11 17:53:54 972

原创 系统编程(七)存储映射与共享内存

存储映射I/O(mmap)和共享内存是两种高效的数据访问方式。mmap通过将磁盘文件映射到进程内存空间,实现直接用指针访问文件内容,无需系统调用,适合大文件或频繁随机访问场景。共享内存则是内核开辟的存储区域,多进程可映射访问同一块内存,是进程间通信最快的方式。两者都需注意权限设置和同步问题,mmap需配合truncate调整文件大小,共享内存需使用shmget/shmat等API管理。示例代码展示了两种技术的读写操作流程和关键函数用法。

2025-09-11 08:00:00 1046

原创 C语言指针

本文介绍了指针的核心概念与应用。指针作为存储内存地址的变量,通过解引用(*p)来访问数据。主要内容包括:指针的基本操作(取地址、解引用、算术运算);指针类型与内存访问的关系;多级指针的概念;指针在函数传参、数组处理、字符串操作中的应用;以及空指针、野指针等特殊指针类型的注意事项。重点强调了指针类型决定数据访问方式、指针运算基于类型大小等特性,并指出指针在动态内存管理和高效数据操作中的重要性,同时提醒使用时要防范常见错误。

2025-09-10 19:00:00 1010

原创 系统编程(六)进程间通信-消息队列

摘要: 消息队列是进程间通信的数据传输机制,通过内核维护的队列实现异步通信。消息包含类型标识(mtype)和自包含数据,支持多对多读写。SystemV消息队列使用key标识,通过msgget创建,msgsnd/msgrcv发送接收,msgctl管理队列属性和删除。核心特性包括类型过滤、持久化存储和内核级共享。开发时需注意结构体定义(mtype首位)、权限控制及队列清理(避免泄露)。POSIX消息队列提供更现代的API。典型应用场景如解耦生产消费进程,需结合ipcs/ipcrm工具管理。

2025-09-10 08:00:00 956

原创 C语言(嵌入式方向)

本文摘要:文章系统介绍了嵌入式开发中的数据存储与处理技术。主要内容包括:1)数据存储方式(位、字节、字长)、字节序(大小端)及内存对齐;2)基本数据类型(整型、浮点)及其在嵌入式中的应用注意事项;3)类型转换规则与典型应用场景;4)指针、结构体、位域等高级数据结构的嵌入式用法;5)各类运算符(算术、关系、逻辑、位运算)的实际应用技巧;6)通过LED控制、定时器配置、通信协议等实例展示理论知识的工程实践。特别强调了位操作、寄存器映射、volatile/const关键字等嵌入式开发核心技术要点。

2025-09-09 19:00:00 886

原创 系统编程(五)进程间通信-管道

本文系统介绍了Linux/Unix系统中的管道机制,包括匿名管道和命名管道(FIFO)两种类型。管道作为进程间通信的重要方式,通过内核维护的环形缓冲区实现数据流动,支持单向(半双工)和双向(全双工)传输。文章详细阐述了管道的原理、特点、编程实现和典型应用场景,重点讲解了父子进程通信、跨进程通信的实现方法,以及阻塞/非阻塞模式、信号处理和性能优化等关键技术。通过实际案例展示了管道在多进程流水线设计中的应用,说明了如何利用管道实现高效、模块化的数据处理系统。文章最后总结了管道作为"内核缓冲区+阻塞机制

2025-09-09 08:00:00 1065

原创 系统编程(四)进程间通信

本文摘要: 进程间通信(IPC)是不同进程间协作的关键机制,信号(Signal)作为其中一种异步通知方式具有轻量级特点。信号通过编号(1-31)和名称(SIGINT等)标识,可产生于终端按键、硬件异常或系统调用。信号处理支持默认动作、忽略或自定义handler,sigaction比signal更安全可靠。信号集操作和阻塞机制可控制信号递送,需注意handler设计要简短可重入。调试时推荐使用strace跟踪信号,并避免在handler中调用非异步安全函数。

2025-09-06 08:00:00 1449

原创 系统编程(三)进程的究极扩展

本文系统介绍了Linux进程管理的核心概念和技术要点。主要内容包括:1)三类特殊进程(僵尸、孤儿、守护进程)的定义、特征及处理方法;2)多进程创建技术(fork)、回收机制(wait/waitpid)及状态获取;3)exec函数族的使用方法和注意事项;4)system函数的实现原理;5)终端、会话与进程组的关系。重点阐述了守护进程的创建流程(fork→setsid→后台任务)和优化措施(umask、目录变更、文件描述符关闭),并对比了wait与waitpid在进程回收顺序控制上的差异。文章通过代码示例和流程

2025-09-05 08:00:00 972

原创 系统编程(三):进程、父子关系与资源回收

本文系统介绍了进程管理的核心概念与操作。主要内容包括:1.进程基础:区分程序与进程,解释单道/多道程序、并发/并行机制;2.进程控制块(PCB)的结构与作用;3.进程状态转换与查看命令(ps);4.进程号(PID)与进程组管理;5.进程创建(fork/vfork)与父子进程关系;6.进程退出(exit/_exit)与缓冲区处理;7.资源回收(wait/waitpid)机制。重点阐述了进程创建、执行控制、资源回收的系统调用使用方法及注意事项,为理解操作系统进程管理提供了实践指导。

2025-09-04 08:00:00 1072

原创 系统编程(二)系统调用函数

本文介绍了系统编程和系统调用的基本概念。系统编程是在操作系统下进行的编程,通过系统调用接口访问硬件资源。系统调用是用户态访问内核的唯一入口,用于进程管理、内存管理、文件系统等。文章详细说明了用户态和内核态的区别,以及系统调用与内存、硬件资源的关系。重点讲解了系统调用I/O函数,包括文件描述符的概念,以及open、close、write、read、remove等函数的用法和注意事项。最后对比了文件描述符和FILE的区别,并解答了常见问题。

2025-09-03 08:00:00 1014

原创 系统编程(一)shell的学习

本文介绍了Shell编程的核心概念和常用操作。主要内容包括:1)Shell的桥梁作用,既是语言又是解析器;2)脚本编写和执行方式;3)变量定义、环境变量和特殊变量处理;4)条件测试(文件、字符串、数值);5)流程控制语句(if/case/for/while);6)函数定义与调用;7)环境配置和实用案例。重点强调了变量操作、条件判断和循环控制的语法细节,通过1-100累加等实例展示了Shell的自动化能力,适合作为Linux系统管理和自动化任务的入门参考。

2025-09-02 08:00:00 618

原创 USART 接收中断配置(关于stm32f10x系列USART 接收中断配置

本文介绍了STM32中USART接收中断和EXTI外部中断的配置方法。USART部分包括:1)开启时钟;2)配置GPIO引脚为复用推挽输出(TX)和浮空输入(RX);3)设置USART参数(波特率115200,8位数据,1位停止位);4)使能接收中断;5)配置NVIC优先级;6)编写中断处理函数。EXTI部分同样包含6个步骤:时钟开启、GPIO配置、AFIO映射、EXTI设置、NVIC配置和中断处理。文章还对比了中断模式与事件模式的区别,强调了中断服务函数应简洁高效、及时清除中断标志位等注意事项,并提供了中

2025-09-01 07:58:55 949

原创 Usart和Exti库函数编程中遇到的小问题(物联网嵌入式)

适合快速响应外部事件(按键、传感器),事件模式适合轮询或低功耗场景。

2025-08-31 08:00:00 894

原创 C语言结构体指针数组讲解笔记

场景为什么用二级指针如何操作初始化学生数组动态分配指针数组存储每个学生每个学生结构体需要独立内存存储姓名字符串长度不固定增加/删除学生数组长度动态变化函数传递函数内可以修改原数组函数参数为STU **s。

2025-08-30 08:00:00 832

原创 C语言字符串与内存函数详解(strcpy/strncpy/strcat/strcmp/memcpy等)

函数类型示例函数主要特点注意事项字符串拷贝strcpystrncpy面向字符串,可自动处理结尾符strncpy可能不会自动加\0字符串拼接strcatstrncat拼接字符串,末尾自动\0目标数组需有足够空间字符串比较strcmpstrncmp按字符比较strncmp限制比较长度字符串查找strstrstrchr查找子串或字符遇\0停止内存查找memchr任意内存查找包括\0内存比较memcmp按字节比较不受\0限制内存拷贝memcpymemmove按字节复制memmove。

2025-08-29 20:33:27 379

原创 学生信息管理系统 —— 课程设计报告(C语言有头双向链表)

本文以 C语言学生信息管理系统 为例,详细讲解了链表、结构体、函数模块化等基本数据结构和编程思想在实际项目中的应用。系统主要功能包括学生信息的 录入、查询、修改、删除、排序及成绩统计,并通过链表实现动态存储和管理,实现了较为完整的学生信息管理流程。文章不仅分析了各功能模块的实现思路和关键代码,还总结了项目开发中遇到的难点及解决方法,如链表操作、输入校验和排序算法选择等。通过本项目的开发与实践,作者对 C 语言编程能力、程序设计逻辑和调试技巧有了显著提升,为今后更复杂系统的开发奠定了基础。

2025-08-29 20:05:37 2129

学生信息管理系统 - 课程设计报告(C语言有头双向链表)

有头双链表,专为大学生服务的课程设计参考(有些单词可能拼写错误请见谅,但总体逻辑与运行没有问题)

2025-08-29

空空如也

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

TA关注的人

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