环境变量和地址空间

环境变量

linux系统中的环境变量是用来指定系统运行的环境的一些参数,例如编写代码时,链接时的动态静态库,我们并不知道在哪里,但照样可以链接成功,简单来说,就是通过环境变量帮助编译器进行查找。

查看环境变量

echo $环境变量名称

常见的几个环境变量

  1. PATH:系统提供搜索路径的环境变量
  2. HOME: 简单来说就是用户登录到linux系统中时,默认的目录
  3. HISTSIZE:保存历史命令记录的条数(例如,翻动上键时可以找到上一次的命令,此次算一条)
  4. SHELL:当前SHELL,值通常为/bin/bash

环境标量相关的指令

  1. env :显示所有的环境变量
  2. echo:显示某个环境标量
  3. export:设置一个新的环境变量
  4. unset: 清除环境变量
  5. set: 显示本地定义的环境变量

环境变量也是一种变量,这种变量具有全局属性

获取环境变量的方法

1. 通过代码获取,用main函数的参数来获取

#include<stdio.h>
     int  main(int argc,char *argv[],char *env[])  //第一个参数表示参数的个数,第二个是具体的参数,第三个是环境变量
     {
         int i = 0;
         for(; env[i];i ++i)
         {
             printf("%s\n",env[i]);
         }
         retrun 0;
     }

2.通过第三方变量enviro获取

#include<stdio.h>
int main()
{

3.用getenv函数来访问特定的的环境变量

printf("%s\n",getenv());

地址空间

内存地址就是对一个内存的一个编号,一个地址指向的就是内存的某个位置

在实际操作中我们发现,用fork创建的子进程和父进程输出的地址一模一样,但内容变量是不一样的,在实际中,两个进程的物理地址是不可能一样的,由此可以得出结论:我们用c/c++语言所看到的地址都是——虚拟地址,子进程和父进程输出的变量不是同一个变量

创建一个进程的底层实现,如下图
这里写图片描述

创建一个进程总结:

  1. 先为进程创建一个PCB;
  2. 每一个PCB都指向一个虚拟地址(mm_struct);
  3. 系统在分配一个页表将虚拟地址映射到物理内存当中;(如上图所指,所以父进程和子进程的地址相同,即虚拟地址相同,内容不同,其实是被映射到了不同的物理空间)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值