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]
。
这个 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]
。