当我尝试使用execvp执行不带参数的ls之类的命令时,出现错误:ls:无法访问”:没有这样的文件或目录。
我不知道为什么,原因似乎是他在搜索参数”。
代码的工作方式如下:
int main(int argc, char *argv[])
{
char command[250] = "ls";
argvs[0] = command;
argvs[1] = NULL;
if (execvp( argvs[0], argvs) == -1 )
perror("exec failed");
return 0;
}
我必须在execvp中至少给出一个参数吗?并将其设置为NULL或其他一些空终止符?
答案 0 :(得分:1)
如果argvs
声明如下
char *argvs[2]; /* array of pointer */
那么下面的代码应该可以在您的计算机上工作
int main(int argc, char *argv[]) {
char command[250] = "ls";
char *argvs[2];
argvs[0] = command;
argvs[1] = NULL;
if (execvp( argvs[0], argvs) == -1 )
perror("exec failed");
return 0;
}
我是否必须在execvp中至少给一个参数?
在execvp
的手册页中
int execvp(const char *file, char *const argv[]); /*its having fixed no of argument */
这意味着您必须为execvp()
提供正好两个参数。