execl没有捕获所有参数

时间:2015-01-25 05:44:54

标签: c exec

这个execl声明可能有什么问题?当我尝试运行它时,接收可执行文件会抱怨argc小于3.当我打印argv内容时,我得到以下内容:

argv[1] = -1076146944
argv[2] = 0 

尽管论据包括:

numJoeysStr = 6
randomNumSeedStr = 7

execl("/path/to/executable", "numJoeysStr", "randNumSeedStr", (char *)0);

FWIW,我在替换(char *)0中尝试了NULL。这没有什么区别。

克里斯·杰斯特 - 杨解决了我最大的问题,但现在我在完成两次功能后得到以下内容:

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参数(除了最后一个)必须在引号中,甚至是变量。

1 个答案:

答案 0 :(得分:4)

您实际上需要指定"/path/to/executable" 两次。第一个是要执行的程序,第二个是新进程的argv[0]