Linux进程全解2——进程环境(环境变量、进程运行的虚拟地址空间)
以下内容源于朱有鹏《物联网大讲堂》课程的学习整理,如有侵权,请告知删除。
- 进程运行的环境中的变量。
(1)export命令查看环境变量;
(2)进程环境表
- 每一个进程中都有一份所有环境变量构成的一个表格,即当前进程可以直接使用这些环境变量。
- 进程环境表是一个字符串数组(char** ,或者char* str[ ]),如上图所示。
- 可以用environ这个全局变量指向它。
(3)程序中通过environ全局变量,来使用环境变量;
#include <stdio.h> int main(void) { extern char **environ; // 声明就能用,不用定义 int i = 0; while (NULL != environ[i]) { printf("%s ", environ[i]); i++; } return 0; }
(4)我们写的程序中,可以无条件直接使用系统中的环境变量。
- 一旦程序中用到了环境变量,那么程序就和具体操作系统的环境有关了。
(5)获取指定环境变量函数getenv,设置环境变量setenv。
- 只能设置、删除当前进程的环境变量,而不是操作系统的环境变量。
(1)操作系统中的每个进程,都在独立的地址空间中运行。
- 进程之间是彼此独立,都以为自己是唯一的。
(2)对于32位系统,操作系统为每个进程分配了4GB的逻辑地址空间。
- 逻辑内存中,一般0~1G为OS,1~4G为应用。
- 实际上每个进程所占的物理内存并不多,于是我们可以在物理内存里分配一段内存空间给它。
(3)虚拟地址到物理地址空间的映射;
(4)意义:进程隔离,提供多进程同时运行。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: C语言·数组知识小结
- 下一篇: 利用nginx 反向代理 google