这个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
参数(除了最后一个)必须在引号中,甚至是变量。
答案 0 :(得分:4)
您实际上需要指定"/path/to/executable"
两次。第一个是要执行的程序,第二个是新进程的argv[0]
。