一、環境變量參數:
在Linux/Windows操作系統中, 每個進程都有其各自的環境變量設置。 缺省情況下, 當一個進程被創建時,除了創建過程中的明確更改外,
它繼承了其父進程的絕大部分環境變量信息。 擴展的C語言main函數可以傳遞三個參數,除了argc和argv參數外,還能接受一個char**類型
的envp參數。envp指向一個字符串數組,該數組存儲了當前進程具體的環境變量的內容,envp的最後一個元素指向NULL,此爲envp結束的
標識符。如下代碼可以打印環境變量:
#include <stdio.h>
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[ ]);可以設置執行一個進程的參數與環境變量