execl 没有捕获所有参数

execl not capturing all arguments

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

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