也许这是魔法的问题。我试图创建一个具有以下签名的函数(或等效的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/