也许这是一个神奇的问题。我正在尝试创建一个具有以下签名(或等效的const char * const * args)
的函数void ExecuteJavaVM(char** args){
}
我想模仿execv
如何处理参数数组,您可能知道execv
不要求我们放置数组的最大元素数。它只是神奇地计算我们传递的数组中的元素数量作为其第二个参数。
这是execv签名。
intptr_t _execv(
const char *cmdname,
const char *const *argv
);
不知何故,execv设法“计算”数组argv中的元素数量。这正是我想要做的。
sizeof
几乎没用,因为数组的数据类型衰减为一个简单的指针,所以sizeof
很可能总是返回4。
有什么想法吗?任何人都知道在哪里可以找到Windows的这些功能的来源?
最诚挚的问候, 爱丽儿
答案 0 :(得分:8)
来自POSIX docs(强调我的):
参数
argv
是一个以空字符结尾字符串的字符指针数组。 应用程序应确保此数组的最后一个成员是空指针。这些字符串应构成新进程映像可用的参数列表。argv[0]
中的值应指向与其中一个exec函数启动的进程相关联的文件名。