系统调用execvp未执行

时间:2014-12-24 17:52:54

标签: linux-kernel system

大家好,我是系统编程的新手,如果我的疑问非常模糊,请关注我。

我实际上正在关注一本名为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 **。

为什么会出现此错误?**

1 个答案:

答案 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");
}