我正在开发一个需要能够使用execvp执行某些命令的C程序,我已经实现了这个:
execvp(arguments[0], arguments);
其中arguments[]
是一串蜇伤。在大多数情况下,我的实现工作正常 - 例如如果arguments
为{"touch", "somefile.txt"}
,则touch
命令将按预期调用。
但是,当我尝试将ls
传递给execvp且参数类似于{"/bin/ls", "-a", "."}
时,ls函数会按预期打印目录列表,但也会输出错误
ls: cannot access GLIBC_2.0: No such file or directory
我不知道如何解决此警告,谷歌搜索没有任何结果。有什么想法是错的吗?
答案 0 :(得分:3)
execvp
的手册页说:
execv()
和execvp()
函数提供了一系列指针 以null结尾的字符串,表示可用的参数列表 新计划。按惯例,第一个论点应指向 与正在执行的文件关联的文件名。 数组 指针必须由NULL指针终止。