linux - 环境变量是内核空间的一部分吗?

标签 linux linux-kernel

我已经搜索这个问题好几个小时了,但找不到简单的是或否答案(或者可能取决于操作系统或架构),这正是我要找的。这可能是一个非常微不足道的问题。

我的直觉是,进程的环境变量位于内核空间中,因此是内核数据结构,并且位于虚拟地址空间中进程镜像的正上方。

最佳答案

为什么你认为环境存储在内核中?

这将需要一个专门的系统调用来导出它或映射到进程中的共享内存区域。但是进程可以修改它自己的环境,那么现在会发生什么?检查环境最初是否与 argv 一起存储在堆栈中是微不足道的。

同样,您为什么要四处搜索而不是检查实现。例如,有/proc/PID/environ 并检查清楚地表明它正在从目标进程的地址空间中读取。 http://elixir.free-electrons.com/linux/latest/source/fs/proc/base.c#L908

关于linux - 环境变量是内核空间的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47169141/

相关文章:

linux - 如何检查 Qt GUI 应用程序是否已经在运行(在 Linux 中)?

c - 使用信号量的共享内存安全写入

linux - outb() 在 LDD3 示例短模块中不起作用

linux - deb 安装内核镜像时出错

linux - 在 Ubuntu 10.04(64 位机器)上访问物理内存时 PC 完全死机

linux - 从 Linux 到 Mac 执行脚本

linux - 尽管正确设置了日志级别,但 Printk 不打印

linux - bash脚本zip文件名解析奇怪

linux-kernel - 如何从用户模式切换到内核模式?

linux - 完成压缩 IP 报头的 Xmit