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"
。检查你的解析代码。
我有一个程序可以从文件中获取命令行并将它们标记为字符数组:
例如:文件包含:
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"
。检查你的解析代码。