- 博客(20)
- 收藏
- 关注
原创 Linux软件编程--进程间通信
本文概述了Linux系统中进程间通信(IPC)的主要方式。首先介绍了进程空间隔离性及IPC的必要性,然后详细讲解了三类传统通信机制:1)管道通信,包括无名管道(pipe)用于父子进程通信和有名管道(mkfifo)支持任意进程通信;2)信号机制,包括常见信号类型(SIGINT、SIGKILL等)及其处理方式(缺省/忽略/捕捉),重点介绍了signal、alarm、kill等信号操作函数;3)其他IPC方式如消息队列、共享内存等。文章着重分析了各种通信方式的特点、适用场景及实现方法,特别指出管道操作的阻塞特性和
2025-08-18 18:15:29
642
原创 Linux软件编程--线程
本文系统介绍了线程的基本概念与应用。线程作为CPU调度的最小单元,共享进程资源但独享栈空间,相比多进程具有更高效率和更低资源开销。详细解析了线程创建(pthread_create)、回收(pthread_join)等核心API,以及线程属性设置方法。针对多线程共享资源导致的竞争问题,重点阐述了互斥锁(pthread_mutex)和信号量(semaphore)两种同步机制的原理及函数接口,并分析了死锁产生的四个必要条件。文章还对比了多线程与多进程在效率、通信、安全性等方面的差异,为开发者选择并发模型提供了理论
2025-08-16 18:35:37
1264
原创 Linux编程--进程
创建一个新的进程,新的进程称为子进程,调用fork的进程称为父进程。查看该时刻的所有进程信息(强调父子关系和完整的进程信息)查看该时刻所有的进程信息(强调资源占用和进程的状态)根据 CPU 占用率和内存占用率查看当前内存的信息。renice -n 优先级编号 进程PID。ps -ef | grep 进程名 查找与进程名对应的进程信息。示例:nice -n 优先级编号 进程名。示例:kill -编号 进程PID。父进程中返回子进程的PID。获得调用函数进程的PID号。2.获取 PID 号与 父进程 PID。
2025-08-14 20:08:24
858
原创 Linux编程--文件与目录 IO
* Length of this record 当前记录字节数 */off_t d_off;/* Null-terminated filename 文件名*/ino_t d_ino;/* Inode number 索引节点号 *//* Type of file 文件类型 */O_CREAT :文件不存在创建(注意要给定创建文件的权限)O_EXCL:文件存在报错。O_TRUNC 文件存在截断为0(清0)SEEK_SET:描述符初始位置。可以通过 | 添加以下功能。
2025-08-13 18:50:15
1083
原创 Linux软件编程--标准IO
本文介绍了Linux系统中的I/O操作和文件概念。主要内容包括:1)I/O操作以文件为对象,Linux将一切视为文件;2)文件分类(块设备、字符设备、目录、普通文件等)及其操作方式;3)标准I/O的特点(带缓存、效率高)和缓存类型(全缓存/行缓存/不缓存);4)ASCII码文件和二进制文件的区别;5)详细讲解标准I/O接口函数(fopen、fclose、fputc、fgetc等)及其参数和返回值。文章系统梳理了Linux文件系统和标准I/O操作的核心概念和API接口。
2025-08-11 20:06:13
1358
原创 数据结构--哈希表与排序、选择算法
将数据通过哈希算法映射成一个键值,存取都在同一位置实现数据的高效存储和查找,并通过这种方式来降低时间复杂度。在该板块中,我将构建一个存放0 - 100 熟知的哈希表,并以此为里说明哈希表的实现方法。思路:与哈希表的遍历思路相同,分别查找或删除每一个同上的链表。多个数据通过算法后得到简直相同的现象叫哈希碰撞。利用循环语句访问哈希表每一个桶区的链表。
2025-08-08 18:49:13
424
原创 数据结构--二叉树
本文系统介绍了树形结构和二叉树的原理与实现方法。主要内容包括:1.树形结构基本概念,如节点、前驱、后继、层数等;2.二叉树的定义及分类(完全二叉树、满二叉树);3.二叉树的遍历算法(前序、中序、后序的递归/非递归实现,层序遍历);4.二叉树的基本操作实现(创建、销毁、获取高度等)。重点阐述了递归思想在树结构操作中的应用,并提供了完整的C语言代码示例,包括节点定义、创建函数、各种遍历方式的实现等。文章还特别说明了完全二叉树与非完全二叉树在创建方法上的区别。
2025-08-07 20:54:13
792
原创 数据结构--栈和队列
本文介绍了栈和队列的基本概念及其操作实现。栈具有"后进先出"特性,分为顺序栈和链式栈;队列具有"先进先出"特性,分为循环队列和链式队列。文章详细讲解了顺序栈的创建、判空判满、压栈出栈等操作,以及链式栈的实现方法。对于队列,重点介绍了循环队列的空满判定条件(头尾相同时为空,尾+1等于头时为满)和基本操作。所有数据结构都通过C语言代码示例展示了具体实现过程,包括结构体定义、内存分配和指针操作等关键步骤。
2025-08-06 20:09:50
1358
原创 数据结构--链表
本文系统介绍了数据结构中的链表原理及操作实现。主要内容包括:1)数据结构基础概念与分类;2)链表的特点及与顺序表的对比;3)链表的基本操作(创建、插入、删除、显示、销毁);4)链表高级操作(查找中间/K节点、无头节点删除、倒置);5)链表排序算法(冒泡排序和选择排序)的具体实现。全文以C语言代码为例,详细讲解了单向链表的各类操作实现思路和方法,为理解和应用链表数据结构提供了完整的技术参考。
2025-08-04 00:15:00
743
原创 C语言--构造数据类型
本文介绍了C语言中结构体、共用体和枚举的基础知识。结构体部分包括定义与初始化方法、变量访问方式(通过.和->运算符)、内存存储规则(对齐原则)以及结构体数组和参数传递。共用体部分解释了其共享内存的特性及判别内存大小端的方法。枚举部分则说明了枚举常量的定义规则和实际应用场景,如用枚举实现限行逻辑。这些复合数据类型为C语言提供了更灵活的数据组织方式,是程序设计中的重要工具。
2025-07-30 19:54:18
547
原创 C语言--指针Part2
本文详细介绍了C语言中指针的相关概念及应用。主要内容包括:1)指针函数(返回指针的函数)和函数指针(指向函数的指针)的区别与使用场景;2)二级指针的定义及在修改外部指针变量和指针数组传参中的应用;3)指针数组(存放指针的数组)和数组指针(指向数组的指针)的区别,以及它们在字符串操作和二维数组访问中的具体应用;4)void*指针的特性及其在函数参数和返回值中的通用性。文中通过代码示例展示了指针在函数嵌套调用、计算器实现、字符串排序等场景中的实际应用。
2025-07-28 18:46:41
899
原创 C语言--指针Part1
本文概述了指针的核心概念及其应用。指针本质上是内存地址,指针变量用于存储地址(64位系统中占8字节)。关键操作包括取地址(&)和取值(*)运算符,指针类型决定了其算术运算的步长(如int型偏移4字节)。指针变量需注意野指针和空指针问题,可通过直接或间接方式访问数据。文章还介绍了指针的算术运算规则、基本使用方法,以及在函数参数传递中的两种方式:值传递(保护实参)和地址传递(允许修改实参)。这些概念为理解指针在内存管理和数据操作中的作用奠定了基础。
2025-07-25 20:21:25
615
原创 C语言--函数
本文摘要介绍了C语言函数相关概念:1)函数定义与调用格式,包括返回值类型、形参实参匹配;2)变量作用域与生命周期(局部/全局变量);3)内存存储区域(栈区、数据区等)及变量存储类型(auto/static等);4)递归函数的基本原理和使用注意事项。重点说明了static关键字对变量生命周期和存储位置的影响,以及不同存储区域的内存管理特点。
2025-07-23 18:54:12
7365
原创 C语言--数组
C语言数组知识摘要:数组是存储同类型数据的集合,分为一维/二维整型和字符型数组。一维整型数组定义时元素个数需为常量,只能操作单个元素,下标必须合法且为整型。数组支持三种初始化方式:全部、局部和默认初始化。数组具有连续存储特性,空间大小=元素大小×元素个数。介绍了冒泡排序(相邻比较交换)和选择排序(查找最值交换)两种排序算法及其实现代码。数组操作示例展示了元素的访问和修改方法。
2025-07-20 15:00:47
221
原创 C语言--流程控制
本文介绍了程序流程控制的三种基本结构:顺序结构、分支结构和循环结构。重点讲解了分支结构的if语句(包括单if、if-else和if-else if-else链)和switch语句的使用方法及注意事项。同时详细说明了循环结构中的while、do-while和for循环的执行流程及区别,并介绍了break、continue等辅助控制语句的功能。每种结构都配有具体的代码示例,如用if判断数值大小、使用switch进行多条件判断、以及各类循环的计数打印等。这些控制结构是编程中实现逻辑判断和重复操作的基础工具。
2025-07-18 19:34:32
588
原创 C语言--输入输出函数
C语言输入输出函数总结:1)字符I/O:putchar输出字符,getchar获取字符;2)格式化I/O:printf/scanf需对应格式符,scanf需取地址符;3)字符串I/O:puts自动换行,gets可接收空格字符串。格式控制符包括%d、%f等,支持精度(.mf)、对齐(%-nd)等格式设置。使用时需包含stdio.h头文件,注意数据类型的格式匹配。
2025-07-17 18:33:33
540
原创 C语言--数据类型转换与运算符
本文摘要: C语言数据类型转换包括混合运算转换和强制转换。混合运算时,低精度类型自动转为高精度类型,其中char/short转int,float转double。运算符分为算术、赋值、逻辑等类型,其中算术运算符包含自增自减运算,赋值运算符需注意类型匹配问题。其他运算符包括逗号、sizeof和三目运算符。运算符优先级遵循括号>单目>算术>关系>逻辑>赋值的规律,混合运算需特别注意类型转换和优先级关系。
2025-07-16 18:27:59
453
原创 C语言--数据类型
本文介绍了C语言的基本数据类型,包括整数类(有符号/无符号short/int/long)、字符型(char)、浮点型(float/double)、void类型和布尔型(bool),详细说明了各类型的存储空间、取值范围和存储方式。同时阐述了常量(整型、字符、浮点及标识常量)的特性,以及变量的定义规则(命名要求、初始化注意事项)。文章系统梳理了C语言基础数据类型的关键特性,为编程实践提供了清晰的数据类型参考。
2025-07-15 19:36:04
417
原创 Linux基础
本文介绍了Linux系统的基础操作和开发环境。主要内容包括:1)常用指令如目录操作(pwd/ls/cd)、文件管理(mkdir/rm/cp/mv);2)Linux树形文件结构及各目录功能;3)C语言开发工具:vim编辑器基本操作和gcc编译器四阶段编译流程。这些知识为Linux系统使用和C程序开发提供了基础指导。
2025-07-14 19:15:17
297
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人