当我尝试使用 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 或其他一些 nullterminations?
最佳答案
如果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;
}
Do I have to give as minimum one argument in execvp?
来自execvp
的手册页
int execvp(const char *file, char *const argv[]); /*its having fixed no of argument */
这意味着您必须为 execvp()
提供恰好两个参数。
关于c - execvp ls : cannot access ' ' : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53020199/