一、环境变量参数:
在Linux/Windows操作系统中, 每个进程都有其各自的环境变量设置。 缺省情况下, 当一个进程被创建时,除了创建过程中的明确更改外,
它继承了其父进程的绝大部分环境变量信息。 扩展的C语言main函数可以传递三个参数,除了argc和argv参数外,还能接受一个char**类型
的envp参数。envp指向一个字符串数组,该数组存储了当前进程具体的环境变量的内容,envp的最后一个元素指向NULL,此为envp结束的
标识符。如下代码可以打印环境变量:
#include
int main(int argc,char** argv,char** envp){
int i =0;
while(envp[i]){
printf("envp[%2d] = %s\n", i, envp[i]);
i +=1;
}
return0;
}
环境变量的格式为:环境变量名=环境变量值
当父进程启动一个子进程时,子进程会继承父进程的换了变量信息。在Linux Shell下,通过export可以给Shell添加一个环境变量,此后通过
Shell启动的子进程都会拥有这个环境变量。除了通过export添加环境变量以外,我们还可以通过函数getenv、putenv、setenv等对环境变量进行
操作。 Python的os模块提供创建子进程以及修改环境变量的函数,其中os.system函数可以创建一个子进程,且子进程会继承父进程的环境变量参数信息;os.putenv可以修改进程的环境变量参数信息。
二、关于Linux
Linux Shell中,可以使用$()或者两个反引号(`)来包裹一条shell命令,并返回shell命令的执行结果。比如执行
export testenv2=`python -c "print 'A'*20"`
命令后,再执行./env可以看到有一个名为testenv2的环境变量,其值为20个A。
三、
getenv函数以一个字符串首地址为参数,这个字符串为环境变量名。返回值在eax中,存的内容为环境变量参数字符串首地址。
tips:
python输出不可打印字符时,可以使用“\x”,如print '\x0a\x0d\x0a\x0d'。
python修改环境变量(HEETIAN=AAA):
os.putenv("HEETIAN","AAA")
int execve(const char * filename,char * const argv[ ],char * const envp[ ]);可以设置执行一个进程的参数与环境变量