牛骨文教育服务平台(让学习变的简单)
博文笔记

Linux进程全解2——进程环境(环境变量、进程运行的虚拟地址空间)

创建时间:2017-07-12 投稿人: 浏览次数:387

以下内容源于朱有鹏《物联网大讲堂》课程的学习整理,如有侵权,请告知删除。


  • 进程运行的环境中的变量。

(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)意义:进程隔离,提供多进程同时运行。



声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。