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