大家好,我是系统编程的新手,如果我的疑问非常模糊,请关注我。
我实际上正在关注一本名为Linux System Programming的书,我对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");
}
我收到了一个愚蠢的错误:
error: invalid conversion from ‘const char**’ to ‘char* const*’ [-fpermissive]
我给出了一个const char数组名,显然是const char **。
为什么会出现此错误?**
答案 0 :(得分:0)
args数组不应该有const char *类型,它应该只是char *(与main的argv参数只是char *的方式相同)。所以你的代码应该是这样的:
#include <unistd.h>
int main() {
char *args[] = { "vi", "/home/kidd/hooks.txt", NULL };
int ret;
ret = execv ("/bin/vi", args);
if (ret == -1)
perror ("execvp");
}