自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大家好我是nono牛,在安全的世界里面我们一起学习与探讨

大家好我是nono牛,在安全的世界里面我们一起学习与探讨

  • 博客(75)
  • 收藏
  • 关注

原创 数字大宅的安保进化论:起底安卓 FBE 与元数据加密的工作细节

本文深入解析了安卓文件加密机制,分为三个核心组件:vold负责密钥管理,fscrypt执行文件内容加密,dm-default-key处理元数据加密。vold通过TEE安全芯片获取密钥,使用ioctl系统调用设置加密策略;fscrypt驱动在内存中实时解密文件;元数据加密则通过dm-default-key在块设备层实现。加密采用分层密钥体系:硬件密钥用于系统启动,DE密钥解锁公共功能,用户输入PIN码后生成CE密钥解密个人数据。最终形成双重保护:FBE加密文件内容,Metadata加密隐藏文件系统结构,共同构

2026-04-24 15:42:08 443

原创 彻底搞懂安卓加密:一文看透 FDE、FBE 与元数据加密的爱恨情仇

《安卓加密进化史:从铁门保镖到智能管家》 安卓加密技术经历了三代革新:FDE全盘加密像固执的仓库保镖,重启后必须输入密码才能访问任何数据,导致基础功能瘫痪;FBE文件级加密则化身五星管家,将数据分区域管理,未解锁时也能保持通话等基础服务;元数据加密进一步充当隐私窗帘,隐藏文件特征信息。现代安卓系统(Android 9+)结合FBE与元数据加密,配合TEE安全芯片形成立体防护,即使物理拆解设备也无法破解数据。这套机制既保障安全性,又兼顾使用便利性,完美诠释了移动加密技术的智慧演进。

2026-04-24 11:33:05 595

原创 为什么不能直接在项目 DTS 中引用平台的dts

摘要:在设备树中覆盖 memory_ssmr_features 节点属性时,直接包含 mtxxx.dts 会导致语法冲突。解决方案是创建 .dtsi 文件:1) 复制 mtxxx.dts 为 mtxxx.dtsi 并移除顶层语法;2) 修改原 .dts 仅包含该 .dtsi;3) 在项目 DTS 中通过 &memory_ssmr_features 引用并覆盖属性。这种方法实现了平台默认值与项目定制的解耦,避免全局修改带来的影响,是符合设备树设计理念的标准做法。

2026-02-25 15:51:57 286

原创 如何快速编译dts

摘要:编译设备树文件(DTS)有三种方法:(1)在内核源码中使用make dtbs命令(推荐);(2)直接使用dtc工具快速编译单个文件;(3)先预处理再编译,解决复杂头文件依赖问题。建议在完整内核环境下使用方法一,能正确处理所有依赖关系。其他方法适用于简单验证或解决特定编译问题。

2026-02-25 09:51:14 580

原创 平台dts代码移植到项目

本文介绍如何将平台级设备树中的 memory-ssmr-features 节点移植到具体项目设备树,并修改 svp-region-based-size 为原值一半。主要步骤包括:1)确保项目DTS包含平台DTSI文件;2)通过节点标签引用并覆盖目标属性,将384MiB(0x18000000)改为192MiB(0xC000000);3)验证编译结果。关键点在于正确使用节点标签引用,仅修改必要属性,同时保持其他属性不变。修改时需注意十六进制数值计算和设备树语法规范。

2026-02-25 09:46:31 241

原创 Makefile中打印变量

输出格式:Makefile:2: VAR is set to: test value。# 使用方法:make print-CC 或 make print-CFLAGS。· 简单调试:使用 $(info) 或 $(warning)1. 调试时:使用 make -p 可以打印所有变量和规则。# 方法2:打印所有环境变量和Makefile变量。# 示例3:在规则外部打印(解析阶段打印)# 方法1:打印所有变量(包括内置变量)# 方法3:简单的所有变量打印。· 规则内打印:使用 echo。

2026-01-13 22:44:27 463

原创 Gatekeeper 的精确定义

📌 摘要:Android Gatekeeper 核心解析 Gatekeeper是Android系统中由TEE/SE硬件支持的专用身份验证组件,负责安全验证用户密码/PIN/图案等知识因子。其核心价值在于: 1️⃣ 硬件隔离:验证逻辑在安全环境中执行,防止主系统被入侵时密码模板泄露 2️⃣ 信任传递:生成加密签名的AuthToken,为密钥库等安全服务提供防伪造的验证凭证 3️⃣ 抗攻击:硬件级实现尝试限制,阻断暴力破解 4️⃣ 系统协同:与密钥库形成安全链条,其验证结果是释放受保护密钥的必要条件;与生物识

2026-01-10 10:32:24 868

原创 TEE IPC机制

本文深入解析了TEE(可信执行环境)中IPC(进程间通信)机制的设计特点。在标准TEE架构中,IPC支持安全世界与普通世界之间以及可信应用(TA)之间的安全通信,但会带来性能开销。相比之下,受限TEE设计取消了TA间通信,转而通过在普通世界维护认证状态缓存来智能过滤请求,从而大幅减少昂贵的TEE调用次数。这种设计以牺牲TA功能组合性为代价,换取了更好的性能和功耗表现。文章通过密码验证流程示例,展示了这种优化设计的工作原理及其优缺点。

2026-01-10 10:31:26 677

原创 ps -A|grep gate

摘要:在Android系统中,gatekeeperd(PID 6590)和android.hardware.gatekeeper@1.0-service(PID 811)作为独立进程协同工作,构成安全验证的分层架构。gatekeeperd作为AIDL服务门面处理上层请求,通过HIDL接口调用HAL服务执行硬件相关操作。这种设计体现了Android从HIDL向AIDL演进的过渡状态,前者负责协议处理,后者专注硬件交互。典型调用流程为:应用请求→框架层AIDL调用→HIDL转换→硬件执行→结果返回。该架构在保持

2026-01-10 10:28:29 792

原创 深入理解gatekeeperd 与 android.hardware.gatekeeper@1.0-service调用规则

摘要:gatekeeperd与android.hardware.gatekeeper@1.0-service协同完成Android密码验证,流程分为四步:(1)应用通过Binder调用LockSettingsService;(2)请求转发至gatekeeperd守护进程;(3)gatekeeperd通过HIDL/AIDL调用HAL服务;(4)HAL服务通过Trusty IPC等机制与TEE安全环境通信。TEE完成验证后返回签名令牌,最终由Keystore服务授权释放加密密钥。该架构涉及普通世界与安全世界的协

2026-01-10 10:26:21 536 2

原创 android.hardware.gatekeeper@1.0-service 与 gatekeeperd 区别

Android Gatekeeper安全系统包含gatekeeperd和android.hardware.gatekeeper@1.0-service两个核心组件。gatekeeperd是运行在Android框架层的守护进程,负责提供Binder接口并处理上层请求;而HAL服务则是硬件抽象层的具体实现,负责与安全硬件/TEE交互执行密码验证等敏感操作。两者分工明确,前者处理协议通信,后者专注安全计算,共同保障设备解锁过程的安全性。

2026-01-10 10:22:51 381

原创 创建简单可 start/stop 的 init 服务

本文介绍了如何创建一个支持 start/stop 操作的简单 init 服务。项目结构包含构建配置文件、服务实现代码和 init 启动配置。服务实现代码展示了信号处理、控制 socket 监听、命令处理等功能,支持通过信号或 socket 进行控制。服务主循环采用 select 机制实现事件驱动,包含周期性任务执行和资源清理逻辑。该示例可作为基础框架,扩展实现更复杂的系统服务功能。

2025-12-29 21:50:07 218

原创 为什么有些服务可以用 start/stop,有些不行

Android服务启动机制解析 Android系统中服务的启动控制存在显著差异,主要分为两类: init管理的原生服务: 定义在/system/etc/init/或/vendor/etc/init/目录的.rc文件中 作为独立进程运行(C/C++/Rust实现) 可通过start/stop命令控制(如gatekeeperd、netd) 具有独立生命周期,可按需启停 SystemServer管理的Java服务: 运行在SystemServer进程内(Java实现) 包括AMS、PMS等核心服务 无法单独启停,

2025-12-29 11:03:41 794

原创 gatekeeperd.rc 文件详细分析

本文详细分析了Android系统中的gatekeeperd服务,包括其启动配置、运行机制和功能实现。主要内容包括: 服务配置:通过gatekeeperd.rc文件定义服务属性,包括以system用户身份运行、late_start启动类别和资源限制配置。 系统架构:详细描述了服务启动流程、数据存储结构(位于/data/misc/gatekeeper)以及与SELinux的安全上下文关系。 构建与运行:分析了从Android.bp构建到系统部署的完整流程,包括启动时机选择、资源限制策略和数据存储安全设计。 监控

2025-12-29 11:01:15 573

原创 Android.bp 配置文件详解---gatekeeperd

这篇文档详细解析了Android系统中gatekeeperd守护进程的构建配置文件Android.bp。该文件采用Apache 2.0许可证,定义了gatekeeperd及其相关组件的构建规则,包括: 构建配置:详细说明了编译标志、源文件、依赖库等配置项,使用最新的KeyMint HAL AIDL NDK,并依赖多个安全相关库如libbinder、libgatekeeper、libcrypto等。 组件定义: 可执行文件gatekeeperd的主程序入口 AIDL接口文件组及其共享库实现 模糊测试目标用于安

2025-12-29 10:59:15 419

原创 Android.bp 实例运行结果及详细解释 2

Android.bp构建系统解析与应用构建过程 本文详细阐述了Android.bp构建配置文件在Android系统中的应用,重点展示了三种典型构建场景: C++程序构建:通过cc_library_static和cc_binary模块构建静态库和可执行文件,生成可执行文件myapp及其依赖库 Android应用构建:使用android_app模块构建APK应用包,包含Java代码编译、资源处理和APK打包过程 复杂项目构建:演示多模块协同构建,包括静态库、动态库、可执行文件及配置文件的生成 构建过程在Andr

2025-12-26 22:21:56 1092

原创 Android.bp 语法编程指南 1

Android.bp 是 Android 构建系统(Soong)使用的构建描述文件,采用声明式语法替代传统的 Android.mk。本文介绍了其基本语法规则、常用模块类型(cc_binary、cc_library、java_library等)及完整实例,包含变量定义、文件操作、条件编译等特性。指南还提供了调试技巧和最佳实践,如保持模块简洁、合理分组、添加注释等。通过示例代码展示了如何构建C++程序、Android应用和多模块项目,帮助开发者快速掌握这一构建系统的核心语法和使用方法。

2025-12-26 22:20:12 773

原创 MTK平台Android init.rc服务详解实例

本文详细介绍了MTK平台Android系统中的init.rc服务配置,重点分析了两个典型服务:perfservice性能服务和cameraserver相机服务。perfservice服务展示了MTK特有的性能优化配置,包括进程权限、CPU调度、OOM调整等细节;cameraserver服务则说明了MTK相机硬件适配层的特殊配置要求。文中提供了完整的服务定义示例,包含用户/组设置、能力控制、SELinux标签、socket创建等关键元素,并详细说明了各种触发条件(boot、property变化等)下的服务控制

2025-12-26 22:18:25 356

原创 MTK平台Android init.rc服务详解实例

本文详细介绍了MTK平台Android系统中的init.rc服务配置,重点分析了两个典型服务:perfservice性能服务和cameraserver相机服务。perfservice服务展示了MTK特有的性能优化配置,包括进程权限、CPU调度、OOM调整等细节;cameraserver服务则说明了MTK相机硬件适配层的特殊配置要求。文中提供了完整的服务定义示例,包含用户/组设置、能力控制、SELinux标签、socket创建等关键元素,并详细说明了各种触发条件(boot、property变化等)下的服务控制

2025-12-25 21:17:56 422

原创 实战项目:设计一个智能温控服务

本文设计了一个完整的Android智能温控服务thermal_guardian的.rc配置文件。该服务监控设备温度并动态调整性能策略,包含以下核心设计:1) 服务定义部分采用最小权限原则,设置用户权限、资源限制和日志记录;2) 事件触发机制包括系统启动完成、充电状态、游戏模式、省电模式等多种场景;3) 提供温度阈值动态调整功能,根据不同使用场景自动切换温控策略;4) 包含安全设计如SELinux上下文、进程间通信权限控制等。整个设计体现了模块化、可配置性和安全性原则,确保温控服务高效稳定运行。

2025-12-25 21:16:24 635

原创 安卓rc-属性触发Hello World服务设计

本文设计了一个基于属性触发的Hello World服务系统,通过设置不同属性实现日志打印功能。系统包含一个简单的shell脚本服务,采用最小权限原则设计,支持多种触发方式:标准init控制属性、自定义属性、系统启动时自动触发、物理按键组合触发以及定时触发。服务执行后立即退出(oneshot),并包含详细的错误处理和日志记录机制,包括触发时间记录、状态属性设置和重启次数统计。所有日志通过logcat输出,同时将触发信息写入临时文件便于调试。系统设计注重安全性、灵活性和可调试性,适用于Android平台的基础服

2025-12-25 21:14:10 1280

原创 Android init服务.rc文件,支持开机自启动和手动控制

本文介绍了Android init服务配置文件的编写方法,包括基础模板和高级功能示例。主要内容涵盖服务定义(用户/组权限、能力配置、重启策略)、触发条件(系统事件、属性控制)、多实例服务实现以及编译安装方式。文章提供了完整的守护进程示例和最佳实践建议,强调权限最小化、资源限制和错误处理。还包含通过adb命令手动控制服务的方法,以及日志查看技巧,帮助开发者正确配置和管理Android系统服务。

2025-12-25 20:53:07 434

原创 安卓手机驱动工程师的发展

安卓手机驱动工程师成长路径:3年关键期进阶指南 摘要:安卓手机驱动工程师需要经历0-1年基础开发、1-3年模块专精、3-5年系统设计三个阶段。3年经验是成为技术骨干的关键期,需完成三大转变:技术上从使用到掌控核心模块(如Camera/显示),项目上从参与到主导全流程,视野上从单一模块到系统理解。该岗位技术壁垒高,3-5年经验工程师月薪可达2.5-4万。建议选择重点模块深耕,构建知识体系并主动发起优化项目,完成从执行到设计的思维转变。行业需关注AOSP闭源化趋势和AI整合带来的新挑战。

2025-12-23 09:37:47 1025

原创 3年驱动工程师发展路径与建议

驱动工程师是嵌入式开发的核心岗位,3年经验是关键转折期。发展路径分为入门期(0-1年)、上升期(1-3年)、资深期(3-5年)和架构期(5-8年),薪资随经验增长而提升。核心能力需从技术深度、工程协作到领域专长逐步进阶。行业选择影响职业发展,建议关注芯片、汽车电子等高价值领域。突破瓶颈需主动深入底层逻辑,构建系统认知。长期规划可向技术专家或管理方向发展,关键要保持学习主动性,关注行业前沿趋势。

2025-12-23 09:35:00 757

原创 安卓休眠与唤醒流程

摘要:本文深入解析Android休眠唤醒机制的三层架构(应用层、框架层、内核层),通过流程图展示各层级的协作关系。重点剖析了休眠流程的逐层关停机制(应用请求→框架协调→内核执行)和唤醒流程的硬件中断响应过程(中断触发→内核恢复→应用通知),结合代码片段解释了唤醒锁检查、中断记录等核心机制。最后指出eMMC访问违例问题的本质是休眠时序竞争,并提供了进一步分析的建议方向,如唤醒锁类型、Doze模式等深度优化策略。全文揭示了Android电源管理的多层级状态机协作本质。

2025-12-19 17:43:58 797

原创 安卓/MTK平台日志关键词详解

本文详解了安卓/MTK平台的关键系统模块及其日志含义,包括: 多媒体处理模块(MDP、DIP、VCP)负责图像/视频处理流水线 硬件加速架构(CMDQ)实现任务卸载和并行处理 电源管理(PM、SPM)控制休眠/唤醒流程及电压调节 无线子系统(WLAN、BT、WMT)管理网络连接状态 存储控制器(MSDC)处理eMMC/SD卡操作 安全模块(TEE)提供可信执行环境 文中详细解析了各模块日志关键词、状态转换流程以及典型错误场景,为系统调试提供参考依据。

2025-12-17 10:01:20 989

原创 Android设备日志分析与电源管理问题

Android设备休眠异常分析 日志显示设备在唤醒后快速进入休眠时出现两个关键错误:1)eMMC控制器通信超时(命令6切换模式失败,错误码-110);2)设备访问权限违规(MCU在MSDC0电源/时钟未开启时尝试写操作)。问题发生在系统休眠过程中,TEE安全环境进行RPMB操作与eMMC控制器挂起流程产生竞争,导致访问冲突。根本原因是电源管理时序不同步,建议检查TEE驱动完整性、调整模块挂起顺序,并在安全操作与控制器电源管理间增加同步机制,防止低功耗状态下非法访问。

2025-12-17 09:47:20 851

原创 bash语法与init.rc语法对比

本文对比了bash脚本与Android init.rc脚本的核心差异。bash作为通用Unix shell脚本,支持变量、条件判断、循环和函数等完整编程结构,适用于复杂脚本编写。而init.rc是Android专用的声明式初始化语言,主要用于系统启动时配置服务、执行命令和设置属性,语法简单直接。两者在执行环境上也有本质区别:bash脚本由shell解释执行,init.rc则由Android的init进程解析。文章通过详细代码示例展示了两种语法的具体用法和特点。

2025-12-11 10:05:38 902

原创 完整bash语法教程:从零到专家

本文摘要介绍了bash脚本编程的基础知识,包括基础概念、变量和数据类型、字符串操作以及运算符等核心内容。bash是Unix/Linux系统的命令行解释器,支持变量定义(普通变量、只读变量、数组)、特殊变量($0、$1、$#等)、字符串操作(拼接、截取、替换、大小写转换)以及算术运算(使用$(( ))和let)。这些基础语法是编写shell脚本的必备知识,为后续学习流程控制、函数和高级特性奠定基础。

2025-12-11 10:03:39 1471

原创 Java入门基础概念实例详解(彻底入门)

《Java入门完全指南》提供了系统的Java核心概念学习,包含详细代码示例、注释和运行结果。主要内容包括:1) Java基础:从HelloWorld程序入手,讲解变量、数据类型和运算符;2) 控制流语句:介绍if-else条件判断结构。每个知识点都配有完整代码实例,如数据类型示例展示了8种基本类型及其转换,运算符示例演示了算术、关系、逻辑等运算。所有代码均附有详细注释说明语法规则,并展示预期运行结果,帮助初学者快速掌握Java编程基础。

2025-12-08 09:26:52 563

原创 30天Shell脚本编程实战(彻底逆袭续)

本文展示了两个Shell脚本编程实战案例:Day 15网络操作脚本和Day 16系统监控脚本。网络操作脚本涵盖了网络连接测试、信息获取、端口扫描、HTTP请求和网络监控等功能,包括ping测试、DNS解析、路由追踪、IP地址查询、端口检测和HTTP服务器创建等实用操作。系统监控脚本则提供了CPU、内存、磁盘和网络等系统资源的实时监控功能,通过彩色输出直观显示系统状态。这两个脚本展示了Shell脚本在网络管理和系统监控方面的强大能力,适合用于日常运维和故障排查工作。

2025-12-08 09:15:22 982

原创 30天Shell脚本编程实战(14天逆袭)

本文摘要:本文记录了30天Shell脚本编程实战的前6天内容,涵盖基础语法到实用技巧。Day1介绍"Hello World"脚本;Day2讲解变量和用户输入;Day3展示数学运算;Day4演示条件判断;Day5解析逻辑运算符;Day6说明case语句应用。每个主题都包含详细代码示例和运行结果,循序渐进地帮助读者掌握Shell脚本编程基础。

2025-12-05 21:13:14 670

原创 Shell 脚本编程全面教程 (彻底学会系列)

本文提供了Shell脚本编程的全面教程,从基础语法到高级特性。主要内容包括:Shell脚本基本结构(#!/bin/bash开头)、变量定义与使用(注意等号两边无空格)、字符串操作(长度、子串、替换等)、数组操作(定义、访问、修改、遍历)、各种运算符(算术、关系、字符串、文件测试)以及控制结构(if-else条件判断)。教程通过大量代码示例演示了Shell脚本的核心概念,每个示例都配有详细注释和预期运行结果,适合从入门到进阶的学习需求。

2025-12-05 21:01:19 1479

原创 面向对象编程(OOP)超详细白话教程(实例加运行结果)

面向对象编程(OOP)是一种以对象为核心的编程范式,主要包含类与对象、封装、继承和多态四大核心概念。类作为对象的蓝图,定义了属性和行为;对象则是类的具体实例。封装通过隐藏内部实现细节,提供安全的数据访问。继承实现代码复用,建立类之间的层次关系。多态则允许同一方法在不同对象中有不同实现。通过银行账户等实例代码,展示了如何将这些概念应用于实际编程,体现了OOP在代码组织、安全性和扩展性方面的优势。

2025-12-02 09:51:25 786

原创 C++ 语言全面教程 (基础入门)

本文全面介绍C++编程语言,从基础概念到实际应用。C++是一种多范式编程语言,支持面向对象、泛型等多种编程方式。教程首先通过经典的"Hello World"程序展示基本语法结构,然后详细讲解变量、数据类型、控制结构(条件语句和循环)以及函数定义与调用等核心概念。面向对象编程部分重点介绍了类和对象的创建、成员函数、构造函数等特性。所有概念都配有清晰的代码示例和注释说明,便于学习者理解C++的基本语法规则和编程范式。

2025-12-02 09:38:10 1031 2

原创 2025-12-1最后一个月小记

回顾这一年,上半年参与了S项目和L项目,从中学习了编译版本的相关流程——从平台基线的各个模块编译,到最终打包成版本,都是通过Shell脚本完成。这一套流程值得深入掌握,如今有了AI工具的帮助,理解起来也更容易一些。眼下看来,短期内外部机会不多,但不管怎样,总得持续做点什么。进入最后一个月,我运营的个人博客已经积累了70个粉丝,下一步希望在这个月突破100关注。同时,也计划把各内容平台都搭建起来,保持有节奏的输出。至于写作,可以借助翻译工具,不必强求掌握每一个单词,但持续学习是必要的。

2025-12-01 09:29:50 182

原创 C++ 运算符详解 (彻底学会)

C++提供了丰富的运算符类型,包括算术、关系、逻辑、位运算、赋值等。算术运算符(+-*/%)用于基本数学运算,关系运算符(== != > < >= <=)用于比较值,逻辑运算符(&& || !)组合多个条件。每种运算符都有特定功能和使用场景,通过代码示例可清晰展示其运算规则和结果。理解这些运算符是掌握C++编程的基础。

2025-11-29 15:56:07 1150

原创 C++ 中的 break、continue 和 goto 详解 (彻底学会)

C++中的break、continue和goto是控制程序流程的关键语句。break用于立即终止当前循环或switch语句;continue跳过当前循环迭代的剩余代码,进入下一次循环;goto无条件跳转到指定标签位置,常用于跳出多层嵌套循环或错误处理。虽然goto灵活但应谨慎使用,以避免代码结构混乱。每个语句都有特定适用场景,合理使用可以优化程序逻辑和控制流程。

2025-11-29 15:28:33 661

原创 进程编程深度解析:5个实例彻底掌握

进程编程深度解析摘要 本文通过5个递进实例系统讲解Linux进程编程: 基础进程创建:演示fork()创建单子进程和wait()回收机制 多子进程管理:展示循环创建多个并发子进程,处理僵尸进程问题 管道通信:实现父子进程间通过管道进行数据传递 进程替换:使用exec族函数执行外部程序如ls命令 信号控制:通过信号实现父子进程间异步通信与控制 每个实例包含完整代码、详细注释和预期输出,从简单fork到复杂的进程间通信与控制,循序渐进地掌握进程创建、管理、通信和替换等核心概念。通过这组实例可全面理解Linux进

2025-11-25 10:27:53 519

原创 进程中PID值详解

本文介绍了Unix/Linux系统中使用fork()系统调用创建子进程的机制。fork()调用一次会返回两次,在父进程中返回子进程ID,在子进程中返回0。代码通过判断fork()的返回值区分父子进程:pid==0时执行子进程代码块,pid>0时执行父进程代码块,pid==-1表示创建失败。文中通过示例演示了父子进程的不同执行路径,并解释了fork()的并发执行特性。关键点在于pid==0专门标识子进程,使父子进程能执行不同代码逻辑。

2025-11-25 10:23:39 309

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除