我想看看我在execve()函數中傳遞的環境變量是否真的被傳遞了,所以我做了這段代碼(Main.c):找不到傳入execve函數的env
int main(){
char PATH[4];
strcpy(PATH, "bin");
char * newargv[] = {"./get","", (char*)0};
char * newenviron[] = {PATH};
execve("./get", newargv, newenviron);
perror("execve");
return 0;
}
(get.c):
int main()
{
const char* s = getenv("PATH");
printf("PATH :%s\n",s);
}
但是,當我執行由MAIN.C發佈的二進制文件,我得到這樣的輸出:
PATH:(空)
,而我希望看到
PATH:BIN
你有什麼解釋?
那麼,'PATH'的大小爲3,但是你複製了一個長度爲4的字符串(記住NUL終止符爲'\ 0'')... – StoryTeller
對不起,我只是編輯了我的帖子,但解決了strcpy問題沒有改變:-( – juRioqs75
歡迎使用堆棧溢出 請注意,在這裏說'謝謝'的首選方式是通過 增加投票的好問題和有用的答案(一旦你有足夠的聲譽這樣做, 聲譽) ,並接受任何 問題的最有幫助的答案,你問(這也給你一個小的提升你的 聲譽) 請參閱[關於]頁面,以及[我怎麼問問 ?](http ://小號tackoverflow.com/help/how-to-ask)和 [當有人回答我的問題 怎麼辦?(http://stackoverflow.com/help/someone-answers) –