环境变量与execve:Coursebook揭示进程启动隐藏细节
环境变量与execveCoursebook揭示进程启动隐藏细节【免费下载链接】coursebookOpen Source Introductory Systems Programming Textbook for the University of Illinois项目地址: https://gitcode.com/GitHub_Trending/co/coursebookCoursebook 是伊利诺伊大学开源的 C 语言系统编程入门教材带你深入操作系统底层。本文将结合这本教材讲清两个关键概念环境变量与execve 系统调用——它们正是每次你敲下一条命令、启动一个新程序时幕后默默完成的进程启动动作。看完这篇指南你将明白环境变量如何被复制与继承以及 exec 家族函数如何替换进程镜像。execve 是什么一个系统调用如何启动新进程每次在终端运行命令操作系统最终都会执行一个名为execve的系统调用它把当前进程的进程镜像代码、内存整个替换成目标程序。你可以用 strace 亲眼看到这一幕教材在 background/background.tex 给出了真实输出$ strace head README.md execve(/usr/bin/head, [head, README.md], 0x7ffff28c8fa8 /* 60 vars */) 0注意第三行的注释60 vars——这就是传给新程序的60 个环境变量。execve 的三个参数一目了然要执行的程序、参数列表argv、环境变量envp。环境变量继承规则fork 复制、exec 替换processes/processes.tex 对环境变量的讲解非常精炼核心规则只有两条fork 时复制每个进程拥有自己的一份环境变量字典父进程 fork 后子进程获得一份拷贝——之后父子互不影响。exec 时替换调用带e后缀的 exec 函数如 execve、execle时可以用显式传入的环境变量数组替换新进程的环境。这意味着如果你想让子进程以不同的时区、不同的 LANG 运行date命令只需在 exec 前改好子进程自己的那份环境即可。环境变量存放在哪里环境变量的指针位于进程栈上紧随 argv 之后。C 程序通过getenv/setenv读写它们。下图是教材中进程栈内存的示意图能帮助你把参数、环境变量、局部变量的空间关系可视化exec 家族速记表e、l、p、v 后缀怎么用C 语言有一整族 exec 函数名字看着吓人其实是四个字母的开关组合。教材在 processes/processes.tex 给出了这张速记表后缀含义e显式传入环境变量数组新环境l命令行参数逐个传递listp借助PATH 环境变量自动查找命令v参数以指针数组vector整体传入比如execl(/bin/ls, /bin/ls, -alh, (char*)NULL)表示逐个传参、继承原环境变量、执行/bin/ls -alh。数组形式的调用末尾必须补一个NULL收尾。fork-exec-wait 三步启动程序单个 exec 只是变成另一个程序真正干活的是fork → exec → wait三连模式父进程 fork 出子进程子进程 exec 新程序父进程用waitpid等待结果。这样父进程就成了一个监控者可以在子程序运行前后做别的处理。教材原书配了这张流程图见 processes/drawings/fork_exec_wait.png⚠️ 教材特别提醒system()虽然方便内部就是 forkexecwait但它会把字符串交给 shell 解释容易引发命令注入攻击直接用execlp等函数传参则没有这个隐患。详见 processes/processes.tex。strace 调试 execve环境变量并不私密一个常见的安全误区是把环境变量当成秘密。教材在 processes/processes.tex 点破了真相命令行参数 argv 会出现在ps输出里对所有用户可见环境变量虽然不在ps中显示但在 Linux 上同用户或 root 可以直接读取/proc/pid/environ。所以不要把密钥、密码放进环境变量——这是理解 execve 传参机制后最实用的安全结论。延伸阅读教材里的相关章节环境变量基础appendix/appendix.texexec 函数族与 POSIX 细节processes/processes.texstrace / ltrace 调试技巧background/background.texexecve 与安全攻击场景security/security.tex掌握环境变量 execve这一对概念你就拿到了读懂 Unix 命令链、理解 Docker 容器环境配置的钥匙。下次再看到PATH、HOME这些变量时不妨想想它们正躺在某个进程的栈上等待着下一次 execve 的调用 【免费下载链接】coursebookOpen Source Introductory Systems Programming Textbook for the University of Illinois项目地址: https://gitcode.com/GitHub_Trending/co/coursebook创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

NeRF转精细纹理网格:自适应表面细化与烘焙全流程

NeRF转精细纹理网格:自适应表面细化与烘焙全流程

简介:面向计算机视觉与图形学开发者,这份实战项目围绕三维重建中的前沿问题:如何从神经辐射场(NeRF)通过自适应表面细化恢复精细纹理网格。资源完整提供项目源码与流程教程,涵盖数据预处理、NeRF训练、表面…

2026/10/4 5:21:48 阅读更多 →
Win11 全新安装实操记录:从 UEFI 启动盘到进桌面避坑指南

Win11 全新安装实操记录:从 UEFI 启动盘到进桌面避坑指南

那个蓝底四格的窗户 Logo 从黑色背景里浮出来时,我正一手扶着笔记本,一手翻着摊在桌上的《Windows 11 从入门到精通》。那一刻我清楚记得:书还停在 2.4.1 节,标题写着"启动安装程序",而屏幕上那个比 Win10 更…

2026/10/4 5:21:48 阅读更多 →
用Coding模型当导演:代码大模型+FFmpeg搭建自动化视频生成流水线

用Coding模型当导演:代码大模型+FFmpeg搭建自动化视频生成流水线

一说到Coding模型(也就是Qwen2.5-Coder、DeepSeek-Coder这类代码大模型),大多数人第一反应就是写代码、修Bug、做小工具。但最近我一直在折腾一个很有意思的方向:用它来“做视频”。你没看错,代码模型不做生视频的活&a…

2026/10/4 5:21:48 阅读更多 →

最新新闻

MobileNetV3+LR-ASPP道路语义分割实战指南

MobileNetV3+LR-ASPP道路语义分割实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 5:57:08 阅读更多 →
Matlab实现1976国际标准大气模型:从公式推导到代码实现

Matlab实现1976国际标准大气模型:从公式推导到代码实现

打开气象数据手册,翻到“国际标准大气”那一章,你会发现一堆密密麻麻的表格:高度、温度、压强、密度,从海平面一路排到86公里甚至更高。做飞行器性能估算、导弹弹道计算、发动机推力分析的时候,这些数据是基础中的基础…

2026/10/4 5:57:08 阅读更多 →
用 Electron + Go 打造跨平台剪贴板管理器:监听、检索与隐私保护

用 Electron + Go 打造跨平台剪贴板管理器:监听、检索与隐私保护

1. 做这个项目的起因与定位我每天的工作里,有大量时间花在复制粘贴上:从文档里抄一段说明发给同事,把网上的代码片段存下来,把聊天里的地址整理进任务清单。时间久了你会发现,系统自带的剪贴板只能记住最后一次复制&am…

2026/10/4 5:57:08 阅读更多 →
基于MySQL+Java+Swing的学生宿舍管理系统课设实战指南

基于MySQL+Java+Swing的学生宿舍管理系统课设实战指南

简介:面向高校数据库课程设计与Java实训场景,这份资料是一套基于MySQL与Java Swing开发的学生宿舍管理系统,覆盖学生信息管理、宿舍分配、管理员权限控制、系统登录等核心功能模块,适合计算机专业学生用于课程设计参考或在此基础上…

2026/10/4 5:57:08 阅读更多 →
LS-DYNA岩石爆破数值模拟:建模流程、关键参数与踩坑指南

LS-DYNA岩石爆破数值模拟:建模流程、关键参数与踩坑指南

做岩石爆破数值模拟这几年,我最常被刚入门的朋友问到的一个问题是:LSDYNA到底怎么才能把岩石炸开,而且炸得跟现场差不多?其实这句话背后藏着一整条知识链:从炸药的爆轰参数,到岩石在高应变率下的破坏准则&a…

2026/10/4 5:57:08 阅读更多 →
Java Swing+MySQL物资信息管理系统全解析:从建库到答辩

Java Swing+MySQL物资信息管理系统全解析:从建库到答辩

简介:面向Java课程设计与期末大作业场景的物资信息管理系统完整项目,以Java Swing构建桌面端界面、MySQL作为数据存储,并配有数据库脚本与设计文档。系统覆盖登录认证、用户管理、基础信息维护、物资出入库、查询统计等典型模块,难…

2026/10/4 5:56:08 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →