2013-10-12 14 views
0

我就需要能够使用execvp执行某些命令的C程序的工作,我也有实现这一点:Ç - 错误试图通过时/斌/ LS到execvp

execvp(arguments[0], arguments);

其中arguments[]是一系列刺痛。大多数情况下,我的实现工作正常 - 例如如果arguments{"touch", "somefile.txt"},则按预期调用touch命令。

然而,当我试图传递ls与参数是像{"/bin/ls", "-a", "."}到execvp,通过功能LS打印效果与预期的目录列表,但还打印了错误

ls: cannot access GLIBC_2.0: No such file or directory

我不知道如何解决这个警告,谷歌搜索没有任何结果。任何想法有什么不对?

回答

2

execvp的手动页面表示:

execv()execvp()函数来表示提供给 新程序的参数列表 空终止字符串提供指针数组。按照惯例,第一个参数应指向 与正在执行的文件关联的文件名。 指针的数组必须以空指针终止。

+0

解决了这个问题。但为什么要寻找'GLIBC_2.0'? – DTR

+1

@Dave在'arguments'数组后面有一个指向字符串“GLIBC_2.0”的指针,后面跟着数据部分,因此'ls'试图列出那个。 –