0
大家好我是系統編程的新手,請介意我,如果我的疑問很模糊。系統調用execvp沒有執行
我實際上是在關注一本名爲Linux系統編程的書,並且在execvp()系統調用中有一個疑問。正如我在本機上試用過的一本書示例中給出的,這裏是以下示例。
#include<unistd.h>
//int ret;
int main(){
const char *args[] = { "vi", "/home/kidd/hooks.txt", NULL };
int ret;
ret = execv ("/bin/vi", args);
if (ret == −1)
perror ("execvp");
}
而且我收到foolwing錯誤:
error: invalid conversion from ‘const char**’ to ‘char* const*’ [-fpermissive]
我給一個const char數組名,這顯然爲const char **。
爲什麼給這個錯誤?**
但我因此未理解邏輯。參數類型應爲const char **怎麼字符串文字內影響type.I'm一個C++程序員,如果錯誤介意我。 –
你想要的類型是const * char *。由於文字的類型爲const char *,因此聲明數組類型爲const char *,您可以輸入const char **。所以相反,你讓數組成爲char *來獲得類型const * char *。 http://linux.die.net/man/3/execvp http://stackoverflow.com/questions/12517983/c-what-is-the-datatype-of-string-literal – imareaver