C - execvp 无法处理有效输入

C - execvp not working with valid input

我有一个程序可以从文件中获取命令行并将它们标记为字符数组:

例如:文件包含:

ls -l -a -i

然后在我的程序中,我得到了这个:

char *cmd[10] = {"ls", "-l", "-a", "-i", NULL, NULL, NULL, NULL, NULL, NULL}

我正在打电话

execvp(cmd[0], cmd) 在使用 fork().

的程序中

但是我遇到运行时错误:

ls: invalid option -- ' ' Try 'ls --help' for more information.

从命令行。

我已经用一个使用硬编码 char *[] 的单独程序对此进行了测试,它工作正常。

编辑: -i后面有一个newline字符。我会摆脱那个。谢谢!

ls: invalid option -- '
'

撇号的位置很可疑。换行符似乎以某种方式进入了数组 cmd,或者可能进入了最后一个选项。也许字符串并不是真正的 "-i",但实际上是 "-i\n"。检查你的解析代码。