摘記 putenv和setenv的區別

2021-09-28 10:36:12 字數 1032 閱讀 4940

putenv和setenv都是用來改變環境變數的。

#include

intputenv

(const

char

* string)

;

putenv()用來改變或增加環境變數的內容。引數string的格式為name=value,如果該環境變數原先存在,則變數內容會依引數string改變,否則此引數內容會成為新的環境變數.

#include

intsetenv

(const

char

*name,

const

char

* value,

int overwrite)

;

引數 overwrite用來決定是否要改變已存在的環境變數。如果overwrite不為0,則改變環境變數原有內容,原有內容會被改為引數value所指的變數內容。如果overwrite為0,且該環境變數已有內容,則引數value會被忽略。

putenv可以使用程式中已定義,且值形如"name=value"的字串變數作為函式的實參。此時,系統將不再為該環境變數分配記憶體,使用的是程式中定義變數的記憶體,而是將該字串的變數位址儲存在環境中。因此該變數應該定義為全域性變數,以防止該函式推出以後導致環境變數不可用。

char

*var=

"***=male"

;putenv

(var)

;

putenv可以使用形如"name=value"的常量字串作為函式的實參。此時系統需要為該變數分配記憶體,儲存字串"name=value"。

putenv

("***=male"

);

3.setenv必須分配記憶體,儲存字串"name=value";同putenv的第二種用法。

setenv

("***"

,"male",1

);

set和setenv的區別

這裡討論的是tcsh中變數及環境變數時set和setenv命令的區別 set語法set name value setenv語法setenv name value 最大的區別是,set變數只對當前程序有效,不會傳遞給子程序 setenv變數不僅對當前程序有效,而且會傳遞給子程序 而當同時使用set和s...

Linux的set,env和export的區別

set 顯示當前shell的變數,包括當前使用者的變數 env 顯示當前使用者的變數 export 顯示當前匯出成使用者變數的shell變數 每個shell有自己特有的變數 set 顯示的變數,這個和使用者變數是不同的,當前使用者變數和你用什麼shell無關,不管你用什麼shell都在,比 如hom...

多執行緒中使用mktime和setenv函式

在編寫ats外掛程式的過程中,發現使用mktime會偶爾出現段錯誤,經過網上調研,發現mktime等函式不是執行緒安全的,於是編寫下面的 進行測試.注意加鎖和不加鎖區別很大,在mktime中使用多執行緒,加上互斥鎖就沒有問題.gcc g mktime multithread.c o mktime m...