也许这是魔法的问题。我试图创建一个具有以下签名的函数(或等效的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的这些函数的源代码吗?
谨致问候,
羚羊

最佳答案

来自POSIX docs(强调我的):
参数argv是指向以空结尾的字符串的字符指针数组。应用程序应确保此数组的最后一个成员是空指针。这些字符串应构成新进程映像可用的参数列表。argv[0]中的值应指向与某个exec函数正在启动的进程相关联的文件名。

关于c - execv是如何做到的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12204600/

10-13 05:25