进程环境详解---环境表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程环境详解---环境表相关的知识,希望对你有一定的参考价值。

  启动代码除了会将命令行参数传递给 main 外,还会从内核中获取到一张环境表。该环境表是由全局变量 environ 来指向的。environ 的类型定义如下:
extern char ** environ; /* 这个定义在 unistd.h 头文件中 */
技术分享
技术分享
=====================================================
但是在实际测试当中,使用environ指针的时候却报错了,如下图所示
技术分享
 
技术分享
 
于是去 unistd.h 头文件中查看 environ 的原始定义,如下图所示
技术分享
技术分享
 
从该头文件可以看出,要想使用 environ 变量,需要实现定义 __USE_GNU 宏,而默认系统中是没有定义该宏的,于是在源程序中改用 __environ 变量代替 environ 变量或者在程序一开始声明environ这个变量就可以解决了。
============================================================
  使用 environ 变量查看环境变量的方法只能一次性查看所有的环境变量,因为我们并不知道具体一个环境变量的位置。如果我们想要知道一个具体环境变量的值,我们应该使用 getenv 函数。

以上是关于进程环境详解---环境表的主要内容,如果未能解决你的问题,请参考以下文章

Linux——进程概念进程创建僵尸进程孤儿进程环境变量程序地址空间详解

Linux——进程概念进程创建僵尸进程孤儿进程环境变量程序地址空间详解

Linux——进程概念进程创建僵尸进程孤儿进程环境变量程序地址空间详解

Linux详解 --- 进程管理2 (进程状态环境变量与命令行参数)

[OS-Linux]详解Linux的进程2(进程的优先级,环境变量,程序地址空间,进程地址空间,进程调度队列)

[OS-Linux]详解Linux的进程2(进程的优先级,环境变量,程序地址空间,进程地址空间,进程调度队列)