- 博客(15)
- 收藏
- 关注
原创 Linux进程替换:exec函数
本文介绍了Linux中的进程替换机制,重点讲解了exec系列函数的使用方法。进程替换是指替换进程的代码段、数据段和堆栈段,但保留进程控制块(PCB),使PID保持不变。文章详细分析了execl函数的参数和用法,并介绍了其他变体函数如execlp、execle等。通过代码示例展示了如何用ps命令替换当前进程,并解释了fork+exec联合使用的原理,模拟了Shell命令执行过程。最后给出了一个简单的Shell实现,演示了如何通过创建子进程来执行命令而不影响父进程。
2026-04-20 21:13:54
205
原创 Linux文件操作:系统调用与文件描述符
本文介绍Linux系统文件操作系统调用机制,重点讲解文件描述符特性及核心函数用法,同时说明系统调用与库函数的区别——前者是操作系统底层接口,直接与内核交互,后者是基于其封装的上层接口,更易使用。文件描述符作为进程访问文件的索引,具有进程私有性、fork共享性和资源有限性。文章详解open、read、write、close四大核心系统调用的参数、返回值及场景,通过代码示例演示父子进程共享文件描述符的读写差异,最后给出模拟cp命令实现练习,展示系统调用的实际应用。
2026-04-20 21:05:47
579
原创 Linux进程复制:fork与写时拷贝技术
本文摘要主要介绍了Linux进程复制与替换的相关知识,包括: printf函数缓冲区问题 - 输出会先存入缓冲区,通过fflush可强制刷新 主函数参数解析 - argc参数个数,argv参数内容数组,envp环境变量数组 fork进程复制 - 父进程返回子进程PID,子进程返回0,失败返回-1 fork注意事项: 父子进程并发执行 子进程从fork后继续执行 逻辑地址相同但物理地址不同 写时拷贝技术优化内存使用 典型考点 - 通过fork循环创建进程的数量分析
2026-03-29 12:15:17
482
原创 进程与并发:操作系统核心机制
进程概述 进程是程序的一次动态执行过程,是操作系统进行资源分配和调度的基本单位。每个进程通过进程控制块(PCB)唯一标识,PCB存储进程的属性信息,多个PCB通过链表连接,操作系统通过管理这个链表实现对所有进程的调度和控制。 进程有三种基本状态:就绪、运行和阻塞。状态转换规则包括:就绪→运行(进程调度)、运行→就绪(时间片用完)、运行→阻塞(等待事件)、阻塞→就绪(事件发生)。 并发与并行方面:并行依赖多CPU/多核硬件支持,是真正的"同时执行";并发通过时间片轮转等机制在单CPU上实现
2026-03-29 12:03:56
655
原创 二分查找算法:递归与迭代
本文介绍了四种二分查找算法的实现方法:1)递归法通过不断缩小查找范围定位目标值,但存在栈溢出风险;2)迭代法避免了递归开销,但无法保证重复值的最左位置;3)改进迭代法在找到匹配值后向前线性查找最左位置,最坏情况下效率下降;4)优化版本通过持续二分查找确保O(logn)复杂度下定位最左匹配值。各方法均采用防溢出的mid计算方式,适用于不同场景,其中递归法简洁但效率较低,迭代法效率更优,改进版本则针对重复元素进行了优化。
2026-01-19 00:34:38
335
原创 Linux系统上的库文件生成与使用
本文介绍了Linux系统中库文件的概念及使用方法。库文件分为静态库(.a)和共享库(.so),分别存储在/lib和/usr/lib等目录。静态库在编译时嵌入程序,增加了程序体积但运行时不依赖库文件;共享库则在运行时动态加载,节省空间但需确保系统能找到库文件。文章详细演示了如何从.c文件生成两种库,并通过示例说明其使用方法和注意事项,包括编译选项-L和-l的使用,以及共享库路径问题的解决方案。
2025-12-10 10:28:00
1079
原创 Linux系统上C语言的编译与调试
本文介绍了Linux系统下C语言程序的编译与调试流程。主要内容包括:1) GCC编译器的四步分步编译链接过程(预编译、编译、汇编、链接);2) Makefile文件的作用与编写规则,通过自动化编译提高开发效率;3) GDB调试工具的使用方法,包括Debug和Release版本的区别。文章详细讲解了从源代码到可执行文件的完整转换过程,以及如何利用Makefile管理多文件项目和通过GDB进行程序调试,为Linux环境下C语言开发提供了实用指导。
2025-12-08 00:17:45
1297
原创 C语言文件操作:数据持久化
文件操作的核心是实现数据持久化,将内存数据保存到磁盘。文件分为程序文件(如.c源文件、.obj目标文件、.exe可执行文件)和数据文件(存储程序输入/输出数据)。文件指针(FILE*)是程序与文件交互的中介,指向内存中的文件信息区。文件按存储形式分为文本文件(ASCII码存储,可读性强)和二进制文件(直接存储二进制数据,效率高)。文件操作遵循"打开-读写-关闭"流程,使用fopen()和fclose()函数,支持多种打开模式(如"r"只读、"w"只
2025-11-21 13:31:45
953
原创 C语言动态内存函数解析
C语言动态内存管理通过malloc、calloc、realloc和free函数实现堆内存的灵活分配与释放。malloc分配未初始化的指定字节内存;calloc分配并初始化为0的内存块;realloc调整现有内存块大小,优先原地扩展否则迁移复制;free释放内存防止泄漏。使用时需注意检查返回值、避免重复释放和处理野指针。动态内存管理虽强大但需谨慎,错误使用易引发内存泄漏和崩溃等问题。
2025-11-19 11:03:39
876
原创 Linux常用命令
本文介绍了Linux系统中常用的基础命令,包括文件操作、查看和编辑三类核心功能。文件操作部分涵盖了cd、touch、mkdir等基本命令,以及find、grep等高级搜索工具;文件查看方面详细讲解了cat、more、less等查看器的使用技巧;编辑部分介绍了vim的三种模式切换。文中特别对find命令提供了6个典型场景示例,并附有grep过滤和wc统计的实用语法,最后总结了more/less浏览器的快捷键操作。这些命令组合可满足日常文件管理、内容检索和文本处理等基本需求。
2025-11-18 20:27:39
1114
原创 Linux基础知识
本文介绍了Linux与Windows操作系统的主要区别,包括界面形式、应用领域、开源特性和用户系统等方面的对比。详细讲解了Linux系统的目录结构,包括常见目录功能说明和绝对路径/相对路径概念。重点分析了Linux的文件类型分类(普通文件、目录文件等)和权限管理机制(读/写/执行权限),并提供了两种修改文件权限的方法:文字设定法(u/g/o/a)和数字设定法(三位数字表示法)。文章通过图文并茂的方式,帮助读者快速理解Linux系统的核心特性和基本操作。
2025-11-18 19:37:19
951
原创 C语言数组与字符串核心技巧解析
本文介绍了数组的基本概念和使用方法。数组是相同类型元素的有序集合,定义时需要指定元素类型和长度。文章详细讲解了数组的5种初始化方式、边界检查注意事项、长度计算技巧以及元素访问方法。特别强调了字符数组与字符串的区别,指出字符串是以'\0'结尾的字符数组。同时比较了sizeof和strlen在字符数组处理上的关键差异。最后通过表格对比了数值数组、字符数组和链表的不同特性。
2025-10-18 00:52:02
742
原创 C语言内存操作函数解析(mem系列函数)
本文介绍了C语言中常用的内存操作函数:memcpy(高效内存复制,不处理重叠)、memmove(安全内存移动,处理重叠)、memset(内存设置)、memcmp(内存比较)和memchr(内存字符搜索)。重点对比了memcpy和memmove的区别,前者追求效率但无法处理内存重叠,后者更安全但可能稍慢。文章通过函数原型、使用示例和实现代码详细说明了各函数的用法和特性,并提供了总结表格以帮助理解不同函数的使用场景。这些函数都是C语言中处理内存的基础工具,合理使用可以提升程序效率和安全性。
2025-10-17 17:02:33
755
原创 C语言运算符与位运算解析
本文介绍了C语言中的运算符和位运算符号,重点解析了位运算的基础概念和常用符号。详细说明了左移、右移、取反、按位与、按位或、异或等运算规则及其应用场景,如IP地址转换、找落单数字、无临时变量交换等。同时列举了转义字符的用途,包括控制类转义字符(如\n、\r、\t等)和字符编码转义序列(八进制和十六进制表示)。文章通过具体代码示例展示了位运算的高效性和转义字符的实际应用,为C语言底层开发提供了实用技巧。
2025-10-17 16:42:46
914
原创 C语言基本数据类型解析
本文总结了C语言中基本数据类型的内存占用和表示方法。整型包括short(2B)、int(4B)、long(4B/8B)和long long(8B),分别对应不同取值范围。浮点型有float(4B)和double(8B),精度随位数增加而提高。字符型char(1B)可通过二进制、十进制、八进制和十六进制表示,并支持转义字符。无符号类型通过改变首位符号位来扩展取值范围。各类型输出格式和取值范围差异直接影响程序设计和数据处理。
2025-10-17 15:06:41
546
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅