linux
文章平均质量分 93
linux学习记录
我爱学习yyds
欢迎学习交流C,C++,数据结构,Python,Linux,共同进步
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
轻量级日志模块实现:策略模式 + RAII 的工程化实践
本文介绍了一个基于策略模式和RAII思想的C++轻量级日志模块设计。该模块采用核心架构将日志生成与输出策略解耦,通过LogStrategy抽象接口实现控制台和文件两种输出方式的可扩展切换。关键实现包括:1) 使用RAII管理资源,确保线程安全和自动释放;2) 采用策略模式支持灵活扩展输出方式;3) 提供宏定义简化日志调用。模块具有高精度时间戳、跨平台支持等工程化特性,既能满足基础日志需求,又为高级功能预留扩展空间,体现了C++工程开发中的设计模式应用和资源管理思想。原创 2026-04-27 11:05:02 · 18944 阅读 · 7 评论 -
Linux系统核心特性-软硬链接
本文通俗讲解了Linux系统中的硬链接和软链接概念。硬链接是共享同一inode的文件别名,不占额外空间,不能跨分区或链接目录,删除原文件不影响其访问。软链接是独立的快捷方式文件,可跨分区和链接目录,但原文件删除后会失效。关键区别在于:硬链接是文件分身(同inode),软链接是路径指针(独立inode)。硬链接适用于防误删和多入口访问,软链接适合跨分区引用和目录快捷方式。记忆口诀:硬链接是分身,软链接是快捷方式。通过实际命令演示和场景分析,帮助读者清晰区分两者特性及适用场景。原创 2026-04-13 17:21:02 · 8593 阅读 · 2 评论 -
高级IO-poll
本文深入剖析了poll机制在网络编程中的实现原理和优势。作为select的改进版,poll通过struct pollfd结构体数组解决了select的fd数量限制和事件集重复初始化问题。文章详细介绍了poll的核心数据结构、函数原型,并通过一个完整的TCP服务器实现展示了poll的实际应用。相比select,poll具有输入输出分离、无需计算maxfd等优势,但仍存在遍历开销和数据拷贝问题。poll适用于中小并发场景,而高并发场景需要更高效的epoll等技术。理解poll的设计思路是掌握多路复用技术演进的关原创 2025-11-15 22:56:58 · 14534 阅读 · 13 评论 -
Linux 信号控制
是进程 “主动控制哪些信号可以打扰自己” 的工具;sigpending是进程 “查看有哪些被屏蔽的信号在排队等待处理” 的窗口;信号屏蔽与未决机制,是 Linux 系统中进程对信号 “精细管控” 的核心手段,在系统编程、服务器开发等场景中有着广泛应用。希望这篇博客能帮大家穿透代码,真正理解信号屏蔽与未决的底层逻辑~原创 2025-10-22 10:42:26 · 893 阅读 · 15 评论 -
理解 Linux 进程间通信(IPC)
本文介绍了Linux系统中的进程间通信(IPC)机制,重点解析了SystemV IPC的三种核心方式:共享内存提供最高效的数据共享但需配合信号量保持同步;消息队列实现可靠的异步通信,适合解耦进程;信号量作为"红绿灯"控制进程同步与互斥。文章对比了各类IPC的适用场景,强调资源管理的重要性,并给出实践建议。掌握这些IPC技术能帮助开发者构建高效可靠的多进程应用系统。原创 2025-10-21 14:39:45 · 22394 阅读 · 14 评论 -
Linux文件通信-管道
本文深入解析Linux进程间通信(IPC)的核心机制——管道(Pipe),从内核数据结构、系统调用实现、进程管理到实战应用四个维度展开。首先剖析了struct file、task_struct等关键数据结构如何支撑管道通信,详细介绍了pipe()系统调用的工作原理及其缓冲区管理机制。通过父子进程通信的代码示例,演示了匿名管道的典型应用场景,并分析了其局限性(如仅支持亲缘关系进程、单向通信等)。文章进一步探讨了命名管道(FIFO)等优化方案,并展示了管道在进程池实现中的进阶用法,通过父进程分发任务、子进程执行原创 2025-10-19 20:32:39 · 18786 阅读 · 16 评论 -
linux-高级IO(下)
本文摘要: 本文详细介绍了Linux系统中的epoll多路转接机制。主要内容包括:1)epoll的三个核心函数:epoll_create创建epoll实例、epoll_wait等待事件发生、epoll_ctl管理监控描述符;2)epoll工作原理,通过回调机制和就绪队列实现高效I/O复用;3)epoll服务器实现示例,包括监听套接字、接收连接和处理事件;4)epoll的两种工作模式:水平触发(LT)和边缘触发(ET),分析了两者的特点及使用场景。epoll相比select/poll具有更高性能,特别适合处理原创 2025-08-18 21:23:09 · 831 阅读 · 17 评论 -
linux-高级IO(上)
摘要:本文介绍了非阻塞IO和多路复用select技术。非阻塞IO通过fcntl设置O_NONBLOCK标志实现,使read操作在没有数据时立即返回而非阻塞等待,适用于需要即时响应的场景。多路复用select使用fd_set位图结构监控多个文件描述符,通过输入输出型参数实现事件检测,但存在fd数量限制和遍历开销大的缺点。文中比较了5种IO模型,重点说明了非阻塞IO和select的原理、实现方式及适用场景。原创 2025-08-17 17:19:58 · 1282 阅读 · 14 评论 -
linux-数据链路层
Linux—网络层-数据链路层知识学习原创 2025-08-15 22:41:56 · 1274 阅读 · 10 评论 -
linux_网络层-ip协议
一.路由器的本质也是一个特定的子网的主机,因此它也需要配置ip地址。二.路由器呢一定至少要有连接两个子网,路由器呢也就相当于同时在两个子网中,路由器可以配置多个ip,这是必须的,我们可以粗略地理解为路由器有多张网卡。三.路由器呢一般是一个子网的第1台设备它的ip地址中的网络号一般为1。四.路由器的功能,除了ip报文的转发以外,还有构成子网及局域网。一、IP 地址分类的演变“一跳是数据链路层的一个区间”,补充:是网络中“直接可达的物理/数据链路段”,在以太网里,原创 2025-08-13 22:57:12 · 1670 阅读 · 7 评论 -
linux_https,udp,tcp协议
网络应用层及传输层协议剖析原创 2025-08-05 19:44:19 · 16557 阅读 · 23 评论 -
linux_前台,后台进程
本文介绍了Linux系统中进程管理的几个关键概念:1)会话(session)和进程组(pgid)的组织方式,一个会话包含多个进程组;2)前台与后台进程的区别在于是否拥有终端控制权;3)通过jobs/fg/bg命令管理后台任务;4)守护进程的实现原理:使用setsid系统调用创建新会话,脱离终端控制,使进程能长期后台运行。文章还给出了将普通进程转为守护进程的具体实现步骤,包括创建子进程、调用setsid、重定向标准I/O到/dev/null等关键技术点。这些机制共同构成了Linux系统后台服务管理的基础。原创 2025-07-29 14:19:24 · 1072 阅读 · 16 评论 -
linux_服务端与客户端剖析
本文介绍了基于UDP协议的套接字编程实现,包括服务器端和客户端的设计。主要内容包括:1) 套接字的基本概念和类型(TCP流式套接字和UDP数据报套接字);2) 服务器端的实现,包括创建套接字、绑定地址、接收和发送数据的流程;3) 客户端的实现,包括初始化服务器地址、发送和接收消息;4) 日志系统的设计,支持不同级别的日志输出和多种输出方式。通过详细的代码示例和注释,展示了如何构建一个基本的UDP通信系统,包括错误处理、字节序转换等关键细节。该实现可用于构建简单的客户端-服务器通信应用。原创 2025-07-23 00:59:34 · 1308 阅读 · 15 评论 -
Linux 自旋锁
本文介绍了Linux内核中的自旋锁机制。自旋锁通过"忙等待"(线程原地循环重试)而非休眠的方式实现同步,适用于锁持有时间极短的场景,避免了上下文切换的开销。文章详细分析了自旋锁的工作原理、Linux内核对其的优化(如抢占禁用、SMP支持等),以及使用时的注意事项:临界区必须简短、禁止递归加锁、区分中断上下文等。通过示例代码展示了自旋锁的实际应用,并与互斥锁进行对比,指出自旋锁适合短时操作而互斥锁适合长时任务。最后强调正确使用自旋锁的关键在于评估锁持有时间长短。原创 2025-07-19 20:51:11 · 1086 阅读 · 4 评论 -
linux-线程互斥
这是因为 count++ 并非原子操作,当两个线程同时读取 count 的旧值、各自加1再写回时,就会出现“覆盖”现象——比如线程A和B同时读到 count=100 ,各自加1后写回,最终 count 只增加了1,而非预期的2。所有线程都能访问同一块内存(如 int mutex ), xchgb 让线程把“自己寄存器里的0”和“黑板上的mutex值”交换,本质是用硬件原子指令,实现“我要占锁”的宣告。- 操作完成后,线程“释放锁”( pthread_mutex_unlock ),让其他线程有机会获取锁。原创 2025-07-15 18:04:11 · 1086 阅读 · 2 评论 -
Linux-线程控制
本文介绍了Linux线程管理的核心概念和操作。主要内容包括:1) pthread_join()函数的使用及注意事项,用于线程同步和资源回收;2) 线程退出的三种方式(return、pthread_exit()、pthread_cancel())及其区别;3) 线程间通信机制,包括通过指针传递自定义对象;4) 线程底层实现原理,涉及clone系统调用、TCB和TID;5) 分离线程的设置方法(pthread_detach());6) 线程私有化实现(__thread关键字)。文章通过代码示例详细说明了这些操作原创 2025-07-13 17:40:44 · 746 阅读 · 4 评论 -
linux_线程概念
Linux线程本质上是复用进程内核数据结构的轻量级执行流,虽实现方式特殊但功能完备。线程共享进程地址空间,切换效率高(无需重载页表等资源),创建成本低,能提升多核CPU利用率,但也存在同步复杂、健壮性差等缺点。Linux通过pthread库封装轻量级进程接口提供线程功能,编程时需注意线程安全与资源管理。线程崩溃将导致整个进程终止,体现了"进程资源容器,线程执行单位"的设计理念。原创 2025-07-12 22:16:15 · 657 阅读 · 8 评论 -
linux-进程信号的产生与发送
本文系统介绍了Linux系统中的信号机制。信号是内核向进程发送的异步通知,用于处理各种事件(如用户中断、程序错误等)。信号的生命周期包括产生、保存和处理三个阶段,可通过键盘组合、kill命令、异常事件等方式触发。文章详细解析了经典信号(如Ctrl+C触发的SIGINT)和核心转储机制,对比了普通信号与实时信号的区别,并提供了signal()函数自定义信号处理的编程示例。最后解答了SIGKILL与SIGTERM的区别等常见问题,帮助读者全面理解Linux信号机制及其应用场景。原创 2025-07-09 23:56:59 · 21651 阅读 · 19 评论 -
Linux进程通信-共享内存
本文系统阐述了进程间通信(IPC)的概念、原理和实现方式。核心观点是:IPC通过操作系统提供的共享资源打破进程隔离,实现数据交互。文章详细分析了管道、消息队列、共享内存等主要IPC机制的特点和适用场景,特别指出共享内存作为性能最优的方案,但需配合同步工具确保安全。同时,介绍了System V IPC标准和相关编程接口(ftok、shmget等)的使用方法,并通过示例代码演示了共享内存的创建和访问流程。最后强调,合理选择IPC方式对实现高效多进程协作至关重要,是理解操作系统进程管理的关键。全文兼顾理论深度和实原创 2025-07-03 19:51:17 · 22606 阅读 · 14 评论 -
动,静态库
本文摘要: 文章详细介绍了静态库和动态库的设计与使用方法。静态库通过将多个源文件编译为目标文件并打包(如libmymath.a),需配合头文件使用,编译时需指定路径(-I)和库链接(-L -l)。动态库则需添加-fPIC和-shared选项生成共享库(如libmymath.so),运行时需解决路径问题。文中对比了三种静态库使用方式:指定路径、系统路径安装(可能污染系统)和软链接,并强调动态库的灵活性。最后通过全局变量验证执行结果,提供完整的Makefile示例。原创 2025-06-23 21:07:34 · 339 阅读 · 10 评论 -
linux文件管理
本文探讨了文件系统的核心原理与操作接口。主要内容包括:1) 文件由内容和属性组成,打开文件时属性加载到内存,通过进程管理;2) C语言文件操作接口如fopen的读写模式("w"覆盖/"a"追加)及路径处理;3) Linux系统调用open的底层实现,包括文件描述符、权限控制等;4) 访问文件的本质流程:通过文件描述符表映射到内核文件表项和inode,最终访问磁盘数据。文章对比了C标准库fopen与系统调用open的区别,并阐述了从用户空间到磁盘访问的三层映射机制。原创 2025-06-13 23:11:18 · 10631 阅读 · 28 评论 -
Linux进程控制
本文详细介绍了Linux进程管理与程序替换的核心概念和技术要点: 进程等待的必要性 解决僵尸进程导致的内存泄漏问题 获取子进程执行状态信息 通过wait/waitpid系统调用实现 进程程序替换原理 基于execve系统调用 替换进程地址空间而不创建新进程 6个封装函数的命名规则与区别(l/v/p/e后缀) 关键实现细节 环境变量的三种传递方式 参数传递的NULL结尾要求 错误处理注意事项 多语言脚本调用方法(Shell/Python) 实际应用场景 多程序并发管理 Makefile集成 系统命令与自定义程原创 2025-06-07 20:48:45 · 9917 阅读 · 32 评论 -
Linux进程概念
本文系统介绍了Linux进程管理的核心概念与技术要点。主要内容包括:1)进程基本概念与PID获取方式;2)进程状态分类(运行、阻塞、挂起)及Linux维护方法;3)特殊进程(僵尸进程、孤儿进程)的形成与危害;4)进程优先级机制与调度算法;5)环境变量的管理与应用;6)进程地址空间的组成与验证;7)进程终止的三种场景(正常/异常/错误结果)及退出方法(return/exit/_exit)。通过详细的技术解析和示例代码,阐述了进程创建、状态转换、资源管理、优先级调度等关键机制,揭示了操作系统通过虚拟地址空间和页原创 2025-05-30 22:48:38 · 10797 阅读 · 32 评论 -
冯·诺依曼体系:现代计算机的底层逻辑与百年传承
从第一台电子计算机到如今的云计算、人工智能,冯·诺依曼体系始终是计算机科学的根基。它不仅定义了计算机的工作方式,更启发了无数技术创新。理解这一体系,就像掌握了打开现代科技世界的钥匙,让我们得以窥探计算机背后的神秘逻辑。未来无论技术如何演进,冯·诺依曼的智慧都将持续闪耀在计算领域的星河之中。如果你对计算机体系结构感兴趣,不妨尝试编写一段简单的汇编程序,亲自体验指令在冯·诺依曼架构中的运行轨迹,这或许会让你对这一伟大设计有更深的感悟。原创 2025-05-02 12:08:19 · 2552 阅读 · 17 评论 -
Linux调试器 - gdb使用指南
debug 模式下,程序保留了丰富的调试信息,包括变量名、函数名、行号等,这使得开发者能够在调试过程中清晰地了解程序的内部状态,方便查找问题。当我们已经仔细检查完程序某个区域的代码,确认该部分代码逻辑无误,想要让程序继续执行下去,以观察后续代码的执行情况时,使用该指令可让程序快速运行,直到遇到下一个断点或程序结束。执行到当前函数返回,然后暂停下来等待后续命令。当我们进入一个函数内部进行调试,在查看完函数内部相关信息后,若想快速回到函数调用的上层继续调试,使用该指令可直接执行到函数返回,无需逐行单步执行。原创 2025-04-28 22:06:28 · 1511 阅读 · 28 评论 -
Linux 开发与 Git 入门实践:从进度条小程序到代码托管
2. 在新页面中输入项目名称(注意名称不能重复,系统会自动校验),可选择填写项目描述,设置项目为公开(Public)或私有(Private),还可以选择是否初始化 README 文件等。通过使用 git log 及其相关选项,我们可以方便地回顾项目的开发历史,了解每次代码改动的情况,在排查问题、追溯功能添加等场景中非常有用。- 辅助代码管理:在多人协作时可察觉冲突隐患;3. 在创建好的项目页面中复制项目的链接,链接有 HTTPS 和 SSH 两种形式,可按需复制,以备接下来进行下载。原创 2025-04-27 16:02:55 · 3042 阅读 · 22 评论 -
深入探究Linux项目自动化构建工具:make与Makefile
一个大型工程中,源文件数量众多,且依据类型、功能、模块等分布在不同目录。Makefile 的出现,就是为了定义一系列规则,明确哪些文件需先编译、哪些后编译、哪些要重新编译,甚至执行更复杂的操作。make 则是一个命令工具,专门解释 Makefile 中设定的指令。常见的IDE,如Delphi的 make 、Visual C++的 nmake 、Linux下GNU的 make ,都支持这一编译方式。二者配合,实现项目自动化构建,极大提升软件开发效率。原创 2025-04-23 22:45:27 · 1117 阅读 · 27 评论 -
深入探究Linux编译器gcc/g++:从基础到进阶
连接阶段是将多个目标文件以及所需的库文件组合在一起,生成最终的可执行文件或库文件。通过 gcc hello.o -o hello ,这里的 -o 选项指定输出文件名,执行该命令后,就得到了可以运行的 hello 程序。原创 2025-04-16 21:56:35 · 1105 阅读 · 16 评论 -
深入探索Linux开发工具:Vim与Yum
Vim和Yum在Linux开发工作流中扮演着重要角色。熟练掌握Vim的各种操作和配置技巧,能让代码编辑变得高效流畅;而灵活运用Yum进行软件的安装、卸载和管理,可轻松构建和维护开发环境。希望通过这篇博客,能帮助大家更好地驾驭这两款工具,在Linux开发之路上更进一步。原创 2025-04-13 13:47:52 · 1358 阅读 · 13 评论 -
Linux常用命令详解:从基础到进阶
Linux系统中的这些常用命令,从文件处理到系统管理,从时间操作到其他实用功能,构成了我们日常操作和管理系统的基础。熟练掌握它们,能让我们在Linux系统的使用中更加得心应手,无论是进行开发工作、系统运维还是学习研究,都能事半功倍。不断实践和积累对这些命令的使用经验,将有助于我们在Linux领域不断进阶。原创 2025-04-05 14:25:37 · 2002 阅读 · 14 评论 -
深入剖析Linux常用命令,助力高效操作
在Linux系统的世界里,命令行是我们与系统交互的强大武器。熟练掌握一些常用命令,能极大提升我们的工作效率。今天,就带大家深入了解几个实用的Linux命令。原创 2025-04-02 21:05:09 · 1358 阅读 · 19 评论 -
Linux基础命令:开启系统操作之旅
在Linux的世界里,命令行是我们与系统交互的重要方式。掌握基础命令,就如同拥有了一把开启系统宝库的钥匙。本文将详细介绍一些常用的Linux基础命令,帮助大家快速上手Linux操作。这些Linux基础命令是日常操作中频繁使用的工具。ls 帮我们查看文件和目录内容, pwd 定位当前位置, cd 在目录间穿梭, touch 管理文件时间和新建文件, mkdir 创建目录, rmdir 和 rm 负责清理不再需要的目录和文件。原创 2025-03-31 17:23:22 · 2182 阅读 · 16 评论 -
从0到1,一文读懂Linux的发展历史
Linux,这个如今在全球范围内广泛应用的开源操作系统,其发展历程堪称一部充满创新与协作的传奇史诗。从一位大学生的个人项目起步,Linux逐步成长为影响深远的开源操作系统,对整个计算机行业产生了深远的影响。今天,让我们一同回顾Linux的发展历程,探寻它是如何从一个业余爱好项目,发展成为全球开源社区的代表性成就。原创 2025-03-30 17:41:05 · 2417 阅读 · 18 评论
分享