Linux下的进程(三):进程环境 - HeavyYuan/A-CD-Record-Management-System GitHub Wiki

环境表

每个进程会接受到一张环境表。

外部变量extern char **environ 存储这些环境变量键值对(name=value)

尽量避免直接对该变量的读写,通常用getenv和putenv函数来访问特定的环境变量。

但如果要查看所有环境变量,就只能用environ

资源控制

函数getrlimitsetrlimit可以对进程的资源限制做查看和更改。

以上资源的限制是全局设置,也可以在shell下通过内置命令ulimit -a查看。

这些资源中,常见的是进程产生core的最大字节数。

进程的存储空间布局

高地址
+----------+
|Operating |
|System    |
|----------|
|          | - 命令行参数和环境变量
|----------|
|Stack VMA | - 栈内存,向低地址扩展 
|----------|
|          |
|          |
|----------|
|Heap VMA  | - 堆内存,向高地址扩展
|----------|
|Data VMA  | - 包括初始化数据段(int a=99)和未初始化数据段,又称为bss段(long sum[100])
|----------|
|Code VMA  | - 包含代码
|----------|
|          |
+----------+
低地址