- 博客(119)
- 资源 (1)
- 收藏
- 关注
原创 多路转接epoll+Reactor反应堆
本文介绍了Linux系统中的两种I/O多路复用接口poll和epoll。poll接口通过pollfd结构体管理监听事件,解决了select的文件描述符数量限制问题,但仍存在性能瓶颈。epoll是poll的增强版本,通过epoll_create、epoll_ctl和epoll_wait三个系统调用实现高效的事件管理,解决了poll的性能缺陷,成为Linux下最优的多路I/O复用机制。文章详细分析了两种接口的函数原型、参数说明、就绪条件判断、优缺点对比,并提供了poll监控标准输入的代码示例。
2026-02-15 20:12:35
692
原创 多路转接select系统调用详解
摘要:select系统调用是经典的I/O多路复用实现,允许单进程监视多个文件描述符的可读、可写和异常状态变化。其核心机制是通过位图fd_set结构来管理待监视的fd集合,当有fd状态变化或超时触发时解除阻塞。调用时需设置最大fd值+1(nfds)和超时参数,返回后内核会重写fd_set仅保留就绪fd。使用时需注意每次调用前重新初始化fd_set,避免脏数据问题。select适用于socket编程,可高效检测连接、数据传输等网络事件的就绪状态。
2026-02-08 13:07:16
826
原创 五种IO模型与非阻塞IO
文章摘要:本文系统介绍了Unix/Linux系统中的五种I/O模型:阻塞I/O、非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。重点分析了各模型在数据等待和复制阶段的特性,指出同步I/O与异步I/O的本质区别在于数据复制阶段是否阻塞。通过对比表格详细展示了各模型的实现难度、CPU利用率和并发能力,指出I/O多路复用模型在高并发场景中的优势。文章还澄清了同步/异步通信的概念差异,为网络编程中的I/O模型选择提供了理论依据。
2026-02-04 17:43:26
1176
原创 NAT 技术、代理服务与内网穿透:原理、缺陷及应用场景全解析
摘要: NAT技术通过私有IP与公网IP的转换缓解IPv4地址不足问题,核心包括地址转换(NAPT)和映射表维护,但存在外网无法主动连接内网、资源开销大等缺陷。代理服务器分为正向代理(客户端侧)和反向代理(服务端侧):正向代理实现缓存加速、访问控制及客户端隐藏,适用于企业内网管理;反向代理提供负载均衡、安全防护及缓存加速,是高并发网站和业务系统的关键组件。两者分别从客户端和服务端优化网络通信与安全。
2026-01-29 10:21:26
812
原创 数据链路层核心全解:以太网、MAC 地址、MTU 与 ARP 协议深度剖析
本文深入解析了计算机网络中数据链路层与网络层的核心概念及其协作关系。数据链路层(如以太网)负责局域网内基于MAC地址的可靠传输,通过帧格式(含目的/源MAC地址、类型、数据、CRC校验)实现点对点通信,受MTU(如以太网1500字节)限制。网络层则基于IP地址实现跨网络路由,通过分片机制适配不同链路的MTU差异。文章详细对比了MAC地址(物理标识)与IP地址(逻辑标识)的区别,并分析了MTU对UDP(增加分片丢失风险)和TCP(通过MSS协商避免分片)协议的影响,揭示了网络协议栈各层协同工作的技术细节。
2026-01-29 10:14:08
720
原创 从寻址到转发:网络层 IP 协议全流程工作原理详解
本文分析了TCP/IP协议栈中网络层与传输层的核心功能及协作关系。网络层(IP协议)负责跨网络的路由寻址和主机间数据包传输,采用"尽力而为"机制但不保证可靠性。传输层(TCP/UDP)则确保端到端的可靠传输,TCP通过序列号、确认应答等机制弥补IP层的不可靠性。文章通过快递运输的类比,形象说明了两者的分工:IP层如同物流运输,TCP层则负责质量监控。此外,详细解析了IP协议的核心构成,包括地址结构、分片重组机制及协议头格式,并介绍了网段划分原则和DHCP动态配置技术。
2026-01-29 10:07:22
1695
1
原创 图解 TCP:从滑动窗口到拥塞避免,彻底搞懂 TCP 的可靠性机制
TCP协议通过滑动窗口机制提高传输效率,允许发送方在未收到确认时连续发送多个数据包。窗口大小决定了无需等待确认即可发送的数据量,窗口滑动依据ACK应答进行移动。针对丢包问题,TCP采用快重传机制(连续收到相同ACK时重发丢失数据包)和超时重传机制。流量控制通过接收方通告窗口大小动态调整发送速率,避免缓冲区溢出。拥塞控制采用慢启动机制,拥塞窗口呈指数增长(1,2,4,8...)以探测网络容量,实际发送窗口取拥塞窗口和接收窗口的最小值。这些机制共同保障了TCP的可靠性和网络适应性。
2026-01-20 10:34:55
632
原创 面试必问:TCP 三次握手与四次挥手详解
TCP协议详解 TCP四层模型:传输控制协议,负责数据传输的可靠控制 协议段格式:首部20-60字节,包含端口号、序号、确认号、标志位等关键字段 可靠性机制: 确认应答(ACK)机制保证历史消息可靠 32位序号和确认号实现数据排序和去重 丢包处理:通过超时重传机制动态计算重传时间 连接管理: 三次握手建立连接(SYN+ACK) 四次挥手终止连接 RST标志位强制中断异常连接 TCP通过序号、确认应答、超时重传等机制确保可靠传输,同时提供流量控制和连接管理功能。
2026-01-20 10:26:57
849
原创 拆解 UDP 协议:从协议格式理解UDP
本文介绍了端口号与UDP协议的核心概念。端口号用于标识主机上的应用程序,分为知名端口号(0-1023)和动态端口号(1024-65535)。UDP协议具有无连接、不可靠、面向数据报和全双工的特点,其首部仅8字节,包含源/目的端口号、长度和校验和字段。UDP的发送缓冲区不存在,接收缓冲区则通过sk_buff结构管理报文。sk_buff是Linux内核网络协议栈的核心数据结构,通过移动指针实现高效封装和解包,避免内存拷贝,体现了UDP轻量化、低开销的设计理念。
2026-01-17 15:28:29
730
1
原创 HTTP 协议深度解析:请求/响应、报头、正文的核心原理与实战
HTTP协议是应用层的超文本传输协议,用于客户端与服务器之间的通信。它具有无连接、无状态等特点,默认使用80端口。URL作为统一资源定位符,通过协议+域名+路径的组合唯一标识网络资源。HTTP请求和响应采用固定格式,通过空行分隔报头和有效载荷。URL编码(urlencode)和解码(urldecode)用于处理特殊字符传输问题。HTTP协议通过文本拼接和分隔符解析实现序列化与反序列化,是Web数据交互的基础。
2026-01-15 16:48:20
890
原创 网络计算器实现 - 自定义套接字+序列化+守护进程
文章摘要:本文实现了一个基于TCP协议的网络计算器系统,采用分层架构设计,包含服务端和客户端两个部分。服务端采用守护进程模式运行,通过TcpServer类处理网络连接,Protocol类实现自定义传输协议(使用JSON序列化和编码),Cal类完成实际计算功能。客户端通过TcpSocket与服务端通信,使用相同的协议进行数据交换。系统重点解决了TCP流式数据的处理问题,通过循环读取和缓冲区管理确保完整请求的获取。整体架构清晰,实现了网络计算器的基本功能,包括请求处理、结果返回和数据传输等核心流程。
2026-01-11 12:51:06
704
原创 Linux进程组、会话、作业控制与守护进程核心知识点 - 进程在终端中到底是怎样组织的
本文介绍了Linux系统中的进程组、会话和作业控制概念。进程组是一个或多个进程的集合,由组长进程管理;会话则是多个进程组的集合,通过setsid函数创建。控制终端与会话相关联,前台进程组接收终端输入信号。作业是用户启动的任务进程集合,可通过作业号进行管理,支持挂起(Ctrl+Z)和恢复(fg/bg)操作。这些机制共同构成了Linux系统的进程管理和作业控制基础。
2026-01-09 16:06:39
1115
原创 应用层自定义协议与序列化一站式指南
本文介绍了网络编程中应用层协议的核心概念及实现技术。首先阐述了应用层的定义和作用,重点讲解了协议的本质是结构化数据的约定,以及序列化与反序列化的关键作用。其次深入分析了网络数据传输的本质,解释了TCP全双工通信的实现原理。最后详细介绍了Jsoncpp库的特性、安装方法和Json::Value类的常用操作,为处理JSON数据提供了实用指导。全文通过概念解析、技术原理和具体实现三个层面,系统性地讲解了网络应用开发的关键技术要点。
2026-01-09 13:16:40
943
原创 从原理到实战:TCP 核心接口 + 典型案例 + 调试工具全攻略
本文摘要:文章详细介绍了TCP Socket编程的核心API接口,包括socket创建、bind绑定、listen监听、accept接收和connect连接建立等关键函数的功能、参数及返回值。同时解析了read/write在TCP通信中的使用特点,强调TCP字节流协议的特性。最后通过简单通信功能的实现流程,展示了服务端和客户端的基本交互过程,包括套接字初始化、连接建立、数据读写等环节,为TCP网络编程提供了实用参考。
2026-01-08 11:12:57
1580
原创 拒绝纸上谈兵!UDP 群聊功能实战:从 0 到 1 写出行云流水的代码
本文实现了一个基于UDP协议的群聊系统,主要包含三个核心模块:字节序转换类InetAddr、消息路由功能Route和服务端实现UdpServer。InetAddr类封装了网络与主机字节序的相互转换功能;Route类负责管理在线用户列表,并将接收到的消息转发给所有用户;UdpServer通过socket创建通信端点,绑定端口并处理消息收发。系统采用线程池处理多用户连接,实现了群聊消息的广播功能,支持用户加入/退出群聊的动态管理。整体架构简洁高效,通过路由转发机制有效模拟了群聊场景。
2026-01-07 20:17:46
874
原创 网络通信实战-UDP实现网络英汉字典
本文介绍了网络编程中IP地址格式转换的扩展接口和字典服务的实现。第一部分详细讲解了支持IPv4/IPv6的转换函数inet_pton和inet_ntop,包括函数功能、参数说明和返回值处理。第二部分展示了字典服务的实现,重点包括:1)封装InetAddr类实现网络字节序到主机字节序的转换;2)使用智能指针管理资源;3)通过unordered_map实现字典加载和翻译功能。代码示例提供了网络地址转换和字典查询的具体实现方案,适用于UDP服务端-客户端通信场景。
2026-01-05 18:43:54
1021
原创 UDP 通信接口全维度解析:API 设计原理、调用规范与应用实战
本文概述了网络通信中socket套接字的主要编程接口,重点阐述了UDP通信的相关接口实现。socket API作为抽象的网络编程接口,通过统一的sockaddr结构体设计支持多种网络协议。文章详细介绍了创建套接字(socket)、绑定端口(bind)等核心接口,并解析了sockaddr和sockaddr_in地址结构体的区别与联系。针对UDP无连接通信,说明了服务器和客户端的实现要点,包括使用INADDR_ANY绑定所有网络接口地址的特殊意义。通过分析接口设计思路,展现了socket编程的通用性和扩展性特点
2026-01-04 12:25:27
778
原创 TCP/IP网络传输的基本要素剖析
本文摘要:网络通信的核心是通过IP地址定位主机,端口号标识进程,实现跨主机进程间通信。IP地址确保数据到达目标主机,端口号则精确交付到目标进程。传输层协议(TCP/UDP)与IP、端口号共同构成套接字(Socket),作为网络通信的唯一标识。端口号分为知名、注册和动态端口三类,需遵循同一协议下端口独占原则。网络通信本质是进程间通信,通过内核的传输层协议栈完成数据交互。建立通信需创建套接字,绑定IP和端口,再进行数据传输。
2026-01-03 19:05:59
1288
1
原创 计算机网络核心概述:网络通信协议及传输流程深度解析
本文介绍了计算机网络的发展历程和协议分层思想。网络发展经历了独立模式、网络互联、局域网和广域网四个阶段。协议分层通过OSI七层模型和TCP/IP四层/五层模型实现解耦与标准化,各层明确分工:物理层处理信号传输,数据链路层管理帧传送,网络层负责路由选择,传输层确保端到端通信,应用层支持具体服务。分层设计提高了网络的可维护性和扩展性,使异构设备能够高效互联。
2026-01-03 17:48:32
1178
原创 19.【Linux系统编程】线程安全概述
本文摘要:文章系统阐述了线程安全与可重入的概念及区别,指出可重入函数必定线程安全但反之不一定成立。详细分析了死锁的四个必要条件及避免方法,讨论了STL容器和智能指针的线程安全性。最后介绍了悲观锁、乐观锁等常见锁机制,其中乐观锁通过版本号或CAS操作实现无锁并发。全文从理论到实践,全面解析了多线程编程中的关键问题,为开发者提供了重要参考。
2025-12-31 11:01:51
649
1
原创 18.【Linux系统编程】Linux线程池实现(从互斥、同步到日志+线程池完整代码实现带注释详解)
本文介绍了池化技术和日志系统的实现方法。池化技术通过预分配资源(如内存池、线程池)减少与操作系统的交互,提升系统效率。日志系统采用策略模式设计,支持将日志输出到控制台或文件,包含时间戳、日志等级等必要信息,并通过封装锁机制保证线程安全。日志实现部分展示了互斥锁封装和两种日志策略(控制台输出和文件输出)的具体代码实现。
2025-12-30 08:54:50
1693
原创 17-3.【Linux系统编程】POSIX 信号量核心用法拆解:零基础也能看懂的同步方案
POSIX信号量是内核级/用户级的同步原语,本质是一个受保护的非负整数计数器,通过PV操作实现资源的有序分配。分为二值信号量(类似互斥锁)和计数信号量(支持资源分块使用)。核心特性包括原子性、阻塞唤醒机制和跨场景支持(线程/进程同步)。环形队列是基于固定数组的循环数据结构,通过头尾指针和模运算实现空间复用,需解决空/满判定的二义性问题,常见方案包括引入计数变量或牺牲一个存储位置。这两种机制在多线程编程中常用于实现生产者-消费者模型等同步场景。
2025-12-30 08:50:27
655
原创 17-2.【Linux系统编程】线程同步详解 - 条件变量的理解及应用
本文探讨了线程同步的核心概念及其解决互斥锁带来的问题。通过自助取款机场景类比,说明基础互斥锁虽然保证资源安全但可能导致线程饥饿,而同步机制通过排队规则实现有序访问。文章详细介绍了条件变量的工作原理,包括等待-唤醒机制及其在快递柜存取件场景中的实际应用。最后通过代码示例演示了条件变量的具体使用方法,展示了如何让线程按顺序执行,从而解决互斥锁的不公平性问题,实现高效有序的线程协作。
2025-12-29 10:20:50
965
原创 17-1.【Linux系统编程】线程互斥详解 - 互斥量(锁)的理解及应用
本文讨论了多线程编程中的互斥问题及其解决方案。主要内容包括:1)进程/线程间互斥的基本概念,如共享资源、临界区和原子性;2)多线程并发操作的核心问题——竞态条件,通过售票系统示例展示了未加锁保护时共享变量操作导致的数据不一致问题;3)互斥锁的使用方法,包括初始化、加锁和解锁操作,强调锁的原子性保护作用。文章指出,互斥锁能将并发执行的临界区代码转为串行执行,有效解决竞态条件问题,确保线程安全。关键代码示例展示了未加锁时的错误情况和加锁后的正确实现方式。
2025-12-29 10:12:03
666
原创 16-2.【Linux系统编程】线程控制(POSIX线程库、线程创建、等待、终止、分离线程,多线程创建;线程ID及进程地址空间布局;线程的局部存储)
本文介绍了Linux线程的基本概念和实现方法。主要内容包括:1)通过pthread库创建线程,演示线程ID(tid)和轻量级进程ID(LWP)的区别;2)线程共享进程资源的特点,包括全局变量和函数;3)线程调度机制和崩溃影响;4)C++11线程库在Linux下的pthread封装实现。代码示例展示了线程创建、运行和回收(pthread_join)的基本操作,并解释了线程ID的本质是pthread库维护的进程内唯一标识。
2025-12-22 15:17:44
1285
原创 16-1.【Linux系统编程】线程概念(线程优缺点、异常、用途;进程和线程之间的联系)
文章摘要 本文系统介绍了Linux线程的核心概念,从感性认知到理性分析层层深入。首先从教材定义出发,解释线程作为进程内部执行分支的特性,对比进程与线程的资源分配差异。重点分析了Linux线程的轻量级进程实现方式,以及不同操作系统对线程管理的差异。随后深入探讨了虚拟内存和分页机制的原理,包括物理内存管理中的页框划分、struct page结构体设计等底层实现细节。文章通过图解方式清晰展示了虚拟地址到物理地址的映射过程,以及页表在内存管理中的关键作用,为理解Linux线程机制提供了全面的理论基础。
2025-12-22 15:16:13
1308
原创 15-3.【Linux系统编程】进程信号 - 信号捕捉(信号捕捉流程、操作系统运行方式及流程、内核态和用户态、可重入函数、volatile防止优化)
本文介绍了Linux系统中进程信号的信号捕捉的流程和操作系统运行机制。信号处理不是立即执行,而是在进程从内核态返回用户态时进行检查处理。信号捕捉过程涉及用户态和内核态切换,当信号递达时会调用用户自定义处理函数。操作系统通过硬件中断和时钟中断驱动运行,时钟中断定期触发进程调度。操作系统本质上是一个基于中断的死循环,通过中断向量表响应各种事件。
2025-12-16 10:51:25
892
原创 15-2.【Linux系统编程】进程信号 - 信号保存(信号处理流程的三种状态:未决、阻塞、递达,信号保存由未决表完成、sigset_t信号集类型及相关函数)
本文介绍了Linux系统中进程信号的信号的三种状态及保存方。内核通过未决信号集(pending)为每个进程存储已产生但未处理的信号。信号处理流程包含三种状态:信号递达(Delivery)、信号未决(Pending)和信号阻塞(Block)。内核使用三张表管理信号:pending表记录未决信号,block表记录阻塞状态,handler表存储信号处理函数指针。信号集操作函数包括sigemptyset、sigfillset等,可以读取或修改信号屏蔽字(sigprocmask)和未决信号集(sigpending)。
2025-12-16 10:50:08
1131
原创 15-1.【Linux系统编程】进程信号 - 信号的产生(信号概念、自定义信号捕捉singal函数、前台/后台进程、系统调用kill发送信号)
本文介绍了Linux系统中进程信号的信号产生方式及流程。信号是进程间异步事件通知的一种方式,通过中断当前操作来实现。文章通过快递的类比解释了信号的产生、识别、处理时机和方式等核心概念。主要内容包括:1) 信号与信号量的区别;2) 信号的产生方式,特别是通过键盘发送信号(如Ctrl+C);3) 使用signal()函数自定义信号处理;4) 前台进程和后台进程的区别,以及它们对信号的不同响应方式。文章还提供了相关代码示例和命令操作说明,帮助理解信号处理的实际应用场景。
2025-12-16 10:48:14
1173
原创 14.【Linux系统编程】进程间通信详解(管道通信、System V共享内存、消息队列、信号量)
本文介绍了进程间通信(IPC)的基本概念和实现方式,重点讲解了匿名管道的原理和使用。主要内容包括:1) IPC的目的包括数据传输、资源共享、事件通知和进程控制;2) IPC的本质是让不同进程访问同一份内存资源;3) IPC主要分为管道、System V IPC和POSIX IPC三类;4) 详细阐述了匿名管道的创建、管理和访问机制,通过pipe系统调用创建读写文件描述符;5) 结合代码示例展示了父子进程通过管道通信的过程,子进程写入数据,父进程读取数据;6) 从文件描述符和内核角度分析了管道的实现原理。
2025-12-04 20:08:35
1804
1
原创 开发神器进阶:VSCode 远程连接云服务器 / 电脑,随时随地写代码
本文详细介绍了如何使用VSCode的Remote-SSH插件实现远程开发。通过10个步骤的图文教程,从安装插件到连接远程服务器,帮助开发者直接在本地VSCode中编辑和运行远程文件。该方法解决了环境配置不一致、文件传输繁琐等问题,使开发者能享受本地化的流畅体验。文章还建议后续可配置SSH免密登录等优化,并欢迎读者交流遇到的问题。该教程适合新手快速上手远程开发,提升跨设备工作效率。
2025-11-29 16:01:07
2655
原创 13.【Linux系统编程】从ELF格式深入理解动静态库
本文聚焦 ELF(Linux/Unix 统一二进制文件格式),解析其编译链接核心作用。通过实例说明编译生成 ELF 目标文件(.o),拆解 ELF 头、程序头表、节头表及各类节的核心结构,梳理 “节合并为可执行文件、加载时转段” 的完整流程。借助 readelf 工具,明确程序头表(指导加载)与节头表(静态链接分析)的功能差异,最后点明节转段的核心价值 —— 减少内存碎片,提升 4KB 页面使用效率。
2025-11-16 19:43:12
939
26
原创 12.【Linux系统编程】动静态库制作与使用
本文介绍了库的基本概念和两种类型(静态库和动态库)的生成与使用方法。静态库在编译时链接到可执行文件中,而动态库在程序运行时加载。文章详细说明了两种库的生成流程:静态库通过ar命令打包.o文件,动态库通过gcc命令生成位置无关码。同时介绍了三种不同路径下库的使用方法,包括指定头文件和库文件路径的方式。最后指出了动态库运行时搜索路径的问题及其解决方法。通过具体示例和Makefile脚本,完整展示了库的开发和使用流程。
2025-11-11 11:32:11
646
6
原创 谁还在默认路径装 VSCode 插件?软链接修改路径,C 盘直接 “呼吸自由”
本文介绍了如何通过软链接方法将VSCode插件目录迁移至其他磁盘,以释放C盘空间。具体步骤包括:定位并移动默认插件文件夹到新位置,以管理员身份运行CMD执行mklink命令创建软链接,并验证操作结果。文章还解答了软链接创建后的常见疑问,提供了检查链接是否成功的两种方法。该方法安全便捷,能有效解决插件占用C盘空间的问题,同时不影响VSCode的正常使用。
2025-11-06 14:23:03
1591
3
原创 11.【Linux系统编程】文件系统详解——从磁盘硬件到文件系统
本文介绍了磁盘的物理结构、文件系统及软硬件链接。主要内容包括:1. 磁盘的物理结构。2.ext2文件系统,从磁盘→分区→分组,并对分组内的各个成员进行详解。3.介绍了目录与文件的联系,路径解析和路径缓存,挂载分区等文件相关内容。4.对软硬件连接进行解释:软连接即快捷方式,硬链接即文件备份。
2025-10-31 20:43:22
1984
39
原创 10.【Linux系统编程】缓冲区详解——库缓冲区 VS 内核缓冲区
本文探讨了C语言中缓冲区的机制及其对I/O操作的影响。通过两个实验案例对比了使用close前后printf和write函数的输出差异,揭示了标准库缓冲区的工作机制。文章详细介绍了缓冲区的概念、引入原因、工作流程及三种刷新方式(全缓冲、行缓冲、无缓冲),并分析了库函数IO与系统调用IO的本质区别。关键发现:1)关闭文件描述符后,printf输出失效是因缓冲区未刷新;2)write始终有效因直接系统调用;3)通过fflush或使用无缓冲的stderr可强制刷新缓冲区。这些机制直接影响程序I/O效率与行为。
2025-10-12 20:29:46
1220
46
原创 09.【Linux系统编程】“文件”读写操作,Linux下一切皆文件!
本文系统介绍了文件操作的核心概念与实践方法。首先从狭义和广义两个角度定义文件,指出Linux下一切皆文件的理念,并强调文件操作本质是进程对文件属性和内容的操作。接着详细讲解了C语言文件接口的使用,包括文件创建路径定位、读写实现、标准输入输出流以及不同打开模式的区别。最后引入系统级文件I/O接口,重点解析open函数的标志位参数分类和使用方法。文章覆盖了从语言层到系统层的文件操作知识体系,为开发者提供了全面的文件操作指导。
2025-09-28 10:18:17
1397
27
原创 08.【Linux系统编程】面试官:自己实现过 Shell 吗?我当场把代码甩给他,第二天收到 Offer
本文介绍了一个简易shell的实现原理和流程。主要内容包括:1)shell的基本功能要求,包括处理普通命令和内建命令,理解相关概念和工作原理;2)实现原理分析,通过fork-exec-wait循环建立子进程执行命令;3)详细实现流程,从环境变量初始化、命令行提示符打印,到命令获取、解析和执行;4)关键代码实现,展示了环境变量获取、目录显示优化等核心功能。该shell模拟了bash的基本交互过程,帮助理解shell的工作原理。
2025-09-25 10:21:06
5604
38
原创 07.【Linux系统编程】进程控制(进程创建fork、进程终止exit等、进程等待wait&waitpid、进程替换execl等)
本文主要介绍了Linux进程控制的:进程创建、进程终止、进程等待和进程替换。在进程创建部分,详细讲解了fork函数的工作原理、写时拷贝技术以及fork的常见用法和失败原因。进程终止部分阐述了进程退出的三种场景,比较了return、exit和_exit三种退出方式的区别,并解释了退出码与错误码的区别。进程等待部分,强调了父进程回收子进程的必要性,以避免僵尸进程导致的内存泄漏问题。进程替换使用exec的几个函数实现,重点只替换代码和数据,PCB不变。清晰地展示了Linux进程管理的关键技术原理。
2025-09-23 19:09:22
1243
33
原创 06.【Linux系统编程】命令行参数(给main传参)、环境变量(概念+使用)、进程的虚拟地址空间(用户实际访问的空间)
本文主要介绍了Linux系统中的命令行参数、环境变量和进程虚拟地址空间三大核心概念。命令行参数通过main函数的argc和argv实现程序功能选项;环境变量PATH等帮助系统定位程序,具有全局属性,可通过export/unset管理。虚拟地址空间通过页表映射物理内存,实现内存保护和写时拷贝机制,其区域划分由mm_struct管理。三者共同构成了Linux进程运行的基础:命令行参数提供功能选项,环境变量支持系统配置,虚拟地址空间保障内存安全性和进程独立性。
2025-09-21 12:25:02
1758
48
单链表-C语言实现代码
2025-08-02
C++stack(栈)、queue(队列)、priority-queue(堆)的模拟实现
2025-03-03
C++list的模拟实现
2025-02-27
C++日期类的实现,包括日期+,+=,-,-=和>,<,>=,<=,==,!= ;日期 - 日期 得天数 ;流提取>>,流插入<< 运算符重载等
2025-02-15
C++vector的模拟实现
2025-02-25
C++string类的模拟实现
2025-02-21
Linux系统-线程池-线程池的实现:包括互斥锁、条件变量、单线程、日志打印、线程池的实现
2025-12-23
贪吃蛇项目-C语言实现代码
2025-08-04
双向链表-C语言实现代码
2025-08-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅