0

也许这是一个魔法问题。我正在尝试创建一个具有以下签名的函数(或等效的 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 功能的来源?

4

1 回答 1

9

来自POSIX 文档(强调我的):

参数argv是指向以空字符结尾的字符串的字符指针数组。应用程序应确保该数组的最后一个成员是空指针。这些字符串应构成可用于新过程映像的参数列表。in 的值argv[0]应该指向一个文件名,该文件名与由 exec 函数之一启动的进程相关联。

于 2012-08-30T20:04:51.083 回答