0
我試圖做一些很簡單:填補字符**與論據我想在execvp呼叫C.字符** nargv是空的,但不知道爲什麼
使用這是怎麼了這樣做的:
if(argc >=1)
{
*nargv = "--action";
while(argc--)
{
printf("nargv1 => %s \t argv1 => %s \n", *nargv, *argv);
*++nargv = *argv++;
printf("nargv2 => %s \t argv2 => %s \n", *nargv, *argv);
}
printf("nargv3 => %s \t argv3 => %s \n", *nargv, *argv);
*nargv++ = '\0';
printf("nargv4 => %s \t argv4 => %s \n", *nargv, *argv);
}
輸出給我:
nargv1 => --action argv1 => backup
nargv2 => backup argv2 => --help
nargv1 => backup argv1 => --help
nargv2 => --help argv2 => (null)
nargv3 => --help argv3 => (null)
nargv4 => (null) argv4 => (null)
這聽起來不錯(nargv填寫正確,至少這是我認爲)>但是當我做execvp( 「命令」,nargv)我的論點沒有通過。怎麼了 ?我試圖與gdb一起玩,但沒有成功。
問候
'\ 0'的好處。我會解決這個問題。 對於你的答案的其他部分,你能告訴我一些代碼來做到這一點嗎?我沒有得到它:p thanx – 2010-06-08 15:20:00
它的'像這樣 - 如果你以p = top和loop p ++開始,那麼在循環結束時p將指向列表的* end *,而不是開始。你需要通過開始,即頂部不是p。 – eemz 2010-06-08 15:36:52
或者,使用數組索引:如果你做* nargv ++,你修改nargv,但是如果你做nargv [i ++],你只修改索引i並且可以將完整的nargv傳遞給exec。 – 2010-06-08 18:18:24