【发布时间】:2015-01-25 05:44:54
【问题描述】:
execl 语句可能有什么问题?当我尝试运行它时,接收可执行文件抱怨argc 小于 3。当我打印 argv 内容时,我得到以下信息:
argv[1] = -1076146944
argv[2] = 0
尽管参数包括:
numJoeysStr = 6
randomNumSeedStr = 7
execl("/path/to/executable", "numJoeysStr", "randNumSeedStr", (char *)0);
FWIW,我尝试用 NULL 代替 (char *)0)。这并没有什么不同。
Chris Jester-Young 解决了我最大的问题,但现在我在两次放入函数后得到以下结果:
argv[1] = -1075725068
argv[2] = -1075725056
我尝试取消引用,方法是:
printf("argv[1] = %d\n", *argv[1]);
printf("argv[2] = %d\n", *argv[2]);
只接收以下内容:
argv[1] = 110
argv[2] = 114
如我所料:
argv[1] = 6
argv[2] = 7
对于最后一个问题,事实证明,将变量传递给 execl 而不带引号给了它我预期的数字。不知何故,我的印象是所有execl 参数(除了最后一个)都必须用引号引起来,即使是变量也是如此。
【问题讨论】:
-
为什么将参数打印为整数而不是字符串?
-
哦,对了!让我试试 strtol()
-
我在您编辑之前发表了评论。您的新问题是您正在打印第一个字符的 ASCII 值,这不是您想要的。 (是的,
strtol会将数字的十进制形式(在字符串中)转换为实际数字) -
@immibis - 查看最终编辑
-
@user1185790 对于字符串,您应该使用
%s,而不是%d。