- 博客(33)
- 收藏
- 关注
原创 深入理解Linux信号机制:从基础到高级应用
通过这篇近万字的指南,我们从信号的基本概念一直探索到高级应用,配合大量代码示例和类比解释,相信即使是没有编程基础的小白,也能建立起对Linux信号机制的全面理解。
2025-07-29 08:28:03
562
原创 深入理解C/C++内存管理:从入门到实战
今天,我想和大家系统地分享一下C/C++内存管理的知识,希望能帮助大家少走弯路。这篇文章将从基础的内存分布讲起,逐步深入到高级的内存管理技巧,最后还会分享一些实战经验。
2025-07-22 14:25:49
906
原创 深入解析Linux进程间通信:从管道到POSIX IPC的全面指南
本文将系统性地介绍Linux系统中主要的进程间通信机制,从传统的管道到现代的POSIX IPC,通过代码示例和原理分析,帮助开发者深入理解并掌握这些关键技术。
2025-07-22 06:54:31
523
原创 深入理解ELF文件格式:从编译链接到加载执行的全过程解析
深入解析ELF文件格式,详解其在Unix/Linux系统中的核心作用。ELF是二进制文件标准格式,包含可执行文件、目标文件和共享库。剖析ELF文件结构(ELF头、程序头表、节头表和节区),对比链接视图与执行视图差异。讲解静态链接(编译时确定地址)和动态链接(运行时解析符号)机制,提供readelf、objdump等工具使用方法,最后给出开发建议。
2025-07-21 19:11:39
617
原创 Linux——C/C++静态库与动态库完全指南:从制作到实战应用
本文全面介绍了C/C++中静态库和动态库的制作与使用。静态库通过ar工具将.o文件打包为.a文件,编译时嵌入可执行程序;动态库使用-fPIC和-shared生成位置无关的.so文件,运行时加载。文章详细对比了两者在链接时机、内存占用、升级维护等方面的差异,并提供了四种动态库配置方案。还涵盖混合链接优先级、Windows平台差异处理等实用技巧,以及CMake构建示例。开发者可根据项目需求选择合适库类型,提升代码复用性和维护性。
2025-07-21 15:04:02
937
原创 深入解析Ext系列文件系统:从磁盘结构到文件管理的完整指南
深入理解Ext文件系统不仅有助于系统管理和故障排查,更能启发我们设计高效的数据存储方案。从嵌入式设备到云服务器,从数据库存储到容器镜像,文件系统的选择与优化直接影响着整个系统的性能与可靠性。下次当使用ls命令时,不妨思考这背后复杂的机制:磁头如何移动、inode如何被查找、数据如何被组织。正是这些精妙的设计,让简单的文件操作成为可能,也让数字世界的有序存储得以实现。随着非易失性内存和分布式存储的发展,文件系统技术仍在快速演进。但Ext系列所确立的基本理念和架构,将继续影响未来的存储系统设计。
2025-07-20 16:16:56
705
原创 深入理解Linux进程控制:退出、等待与替换机制
Linux进程控制机制构成了系统编程的基础框架,理解进程退出、等待和替换的内在原理对于开发稳定可靠的系统软件至关重要。进程退出的多种方式及其适用场景僵尸进程的危害与回收策略进程替换的强大功能与灵活用法编写更健壮的多进程应用有效管理系统资源构建复杂的进程协作系统快速诊断和解决进程相关问题随着对Linux系统理解的深入,读者可以进一步探索进程间通信(IPC)、线程管理以及容器技术等高级主题,构建更加完善的系统编程知识体系。
2025-07-19 06:22:08
678
原创 深入理解进程地址空间:虚拟内存与进程独立性
进程地址空间是操作系统提供的一种抽象,它让每个进程都以为自己独占整个内存空间。通过mm_struct和页表机制,操作系统实现了虚拟地址到物理地址的转换,既保证了进程间的隔离性,又提高了内存使用的灵活性。这种设计是现代操作系统能够安全、高效运行多个进程的基础。理解进程地址空间对于深入掌握操作系统原理、进行系统级编程和调试内存相关问题都至关重要。希望本文能帮助你更好地理解这一核心概念。
2025-07-18 22:20:34
784
原创 Linux环境变量:从入门到精通(c++方向)
环境变量就像是Linux系统的"记忆助手",它帮系统和程序记住各种重要的配置信息。想象一下你去超市存包,每个储物柜都有唯一编号,这个编号就是系统找到对应柜子的关键线索。环境变量就是这个"编号",它其实是一组保存在内存中的键值对,用来告诉操作系统和各种程序该去哪里找重要资源,该用什么参数运行。
2025-07-18 14:25:05
717
原创 聊聊进程优先级和切换:CPU资源分配的大学问
进程优先级就像电脑里的交通规则,让重要的程序能"加塞"先走。而进程切换则是CPU"一心多用"的秘诀。优化程序性能解决系统卡顿问题更合理地分配计算资源下次电脑卡的时候,打开任务管理器看看,是不是有什么程序抢了太多优先级!
2025-07-18 06:38:05
514
原创 孤儿进程:当父进程先离开时会发生什么?
通过理解孤儿进程的机制,可以更好地管理进程生命周期,编写更健壮的并发程序!,而子进程仍在运行的进程。此时,子进程会被系统的 。 收养,从而避免成为无法管理的"僵尸"。如果父进程退出后,子进程 。
2025-07-17 17:57:09
690
原创 深入理解进程状态:从运行到僵尸
是程序执行的基本单位,而进程的状态管理是操作系统调度的核心。本文将详细介绍进程的几种主要状态,并结合 Linux 内核的实现,解析进程状态转换的底层逻辑。:一个等待磁盘读取的进程被挂起后重新激活,仍需等待 I/O 完成。Linux 内核的进程状态更加细化,源码中定义了 7 种状态((如僵尸进程),是系统管理和开发调试的重要基础。(如 I/O),即使换回内存也无法立即运行。:一个计算密集型任务被挂起后重新激活。,换回内存后可直接被调度。理解进程状态有助于 。
2025-07-17 14:56:36
547
原创 C语言小游戏——飞机大战
模块化设计:将游戏功能划分为初始化、渲染、更新等模块,便于维护。逐步实现:先实现核心功能(移动、射击),再添加额外特性。调试技巧:使用Visual Studio的调试工具检查游戏状态和变量值。通过这个飞机大战游戏项目,我们展示了如何使用C语言和EasyX图形库开发一个完整的游戏。从游戏设计、数据结构到核心功能实现,这个项目涵盖了游戏开发的关键概念和技术。这个项目不仅适合C语言学习者巩固基础知识,也为有志于游戏开发的初学者提供了一个良好的起点。
2025-07-17 06:24:19
878
原创 深入理解Linux进程与fork机制:从原理到实践
在Linux系统中,进程是操作系统最重要的执行单元,是系统资源分配和任务调度的基本单位。理解进程的运行机制不仅有助于掌握系统编程的核心技能,更能为优化资源利用与提高程序性能提供理论基础。本文将带你从基础原理出发,全面解析Linux进程的组成、管理指令,以及fork机制的核心原理与实际应用。深入理解Linux的fork机制是系统编程的基石。通过fork,Linux实现了高效的多任务处理能力,支持从简单的命令行工具到复杂的服务器应用等各种场景。
2025-07-16 14:18:15
970
原创 GDB调试工具使用指南
GDB(GNU Debugger)是Linux环境下功能强大的调试工具,能够帮助开发者快速定位和解决程序中的问题。选项会在可执行文件中嵌入调试符号,使得GDB能够将机器指令与源代码对应起来。需要注意的是,调试信息会增加可执行文件的大小,但不会影响程序的执行逻辑。通过掌握这些GDB调试技巧,开发者可以更高效地定位和解决程序中的问题。调试是一个需要耐心和经验的过程,熟练使用GDB将大大提升调试效率。选项编译程序,避免优化带来的调试困难。rwatch 变量名。awatch 变量名。thread 线程号。
2025-07-16 06:18:57
474
原创 Linux-Git版本控制实战:从克隆到协作的完整指南
:轻量级,就一个main分支+临时功能分支,适合小团队Git Flow:适合版本发布严格的项目,分支类型多(feature/release/hotfix):强调小批量提交,适合大型团队初学者建议从GitHub Flow开始,简单不容易出错!改代码前先拉最新代码(git pull新功能一定要开新分支提交信息要写清楚遇到冲突别慌,先找队友商量刚开始可能觉得复杂,但坚持用上一个月就会觉得离不开它了。建议在实际项目中多练习,遇到问题善用git --help和官方文档。
2025-07-15 19:34:40
835
原创 初识Linux——Makefile实用教程
编译其实就是把代码变成可执行文件的几个步骤:静态链接 ( 选项):动态链接 (默认方式):简单选择原则:一个最简单的 Makefile:用的时候: 自动找源文件: 隐含规则:不用重复写编译命令3. 常见问题解决 为什么修改后不重新编译?报错 missing separator加快编译速度目录结构: 推荐工具:性能优化:变量定义语法: 等号两边不能有
2025-07-15 14:07:05
834
原创 初识Linux命令及指南(2)
root用户拥有最高权限,不受普通权限限制 系统对user、group、other的识别只进行一次 权限检查顺序:先检查owner权限,然后是group,最后是others。文件权限说明 文件权限示例:-rwxrwxrw_ 2 root root 4096 Oct 20 17:22 test.txt。目录权限说明: 目录权限示例:drwxrwxrw_ 2 root root 4096 Oct 20 17:22 dir。chown:修改文件所有者。chgrp:修改文件所属组。
2025-07-14 20:00:00
298
原创 初识 Linux 命令及指南
(参数说明:c=创建,z=压缩,f=目标文件,v=显示过程可选)可临时获得 root 权限(需输入普通用户密码)注:sudo 权限需由 root 添加至白名单。(-d 指定解压目录,默认解压到当前目录)(-C 指定解压目录,v=显示过程)(使用 -r 参数可压缩目录)
2025-07-14 07:02:15
213
原创 彻底弄懂文件操作?——看这一篇就够了!!(c语言基础)
文件操作是程序与外部数据交互的核心环节,C语言层面上的文件操作,本质还是对系统文件操作函数的封装。学好 C 语言层面的文件操作,是理解 Linux 等操作系统底层机制的重要基石。它不仅能为你后续的系统级编程打下坚实基础,还能培养对程序与硬件资源交互的直觉。“C 文件操作是打开操作系统黑盒的钥匙——你写的每一行fread,最终都会变成内核中的一段汇编。”。
2025-04-26 20:08:00
603
原创 C语言的格式化输出
最近在复习C语言时发现自己对C语言某些格式化输入的规则还有些模糊,于是就重新总结学习了一下,果然温故知新,还是值得说一下滴。(其实就是手痒了想写点简单的内容,不过你可以先看一下接下来的这个小demo,看看关于格式化的东西都还记得不,检验一下自己的C语言基础怎么样)
2025-04-07 20:43:53
899
原创 初学顺序表(C语言-数据结构基础)
以数组为底层代码的顺序表是一种线性表,无论是在物理结构还是逻辑结构上,都是线性的。线性表可分为静态表和动态表,静态表是指给定内存空间的顺序表,它的内存空间是固定的,不能再被修改,因此可能造成两种极端,空间不足或空间浪费。相比之下,动态表明显优于静态表,它的内存空间不是固定的,是可以随时增大的,因此我们在此只讨论动态表。
2024-07-12 22:07:24
1742
1
原创 初学指针*
指针变量的类型肯定是有很重要的意义的,按照一般思维,我们会认为指针变量的大小应取决于其类型,因为int类型的变量总是占4个字节,char类型的变量总是占1个字节,这是我们所知道的。,要不然pa就是一个野指针(就是说它的指向是未知的,如果不加以限制的对它进行操作就会引发程序错误),所以可以初始化一个NULL,代表这个指针的指向是空的。,它的创建和其它形如整型变量,字符变量,数组变量的创建一样,都由变量类型和变量名称组成,也需要初始化,“ & ” 是取地址符号,它是运算符,它的作用就是取一个变量的指针。
2024-04-05 14:27:30
1201
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人