我正在尝试为execlp()编写一个包装器。 为什么这不起作用?它是哨兵吗?
int vExeclp(const char *file, const char *arg, va_list argptr)
{
int returnValue = 0;
returnValue = execlp(file, arg, argptr, NULL);
// error handling if returnValue == -1
return(returnValue);
}
int Execlp(const char *file, const char *arg, ...)
{
int returnValue = 0;
va_list argptr;
va_start(argptr, arg);
returnValue = vExeclp(file, arg, argptr);
va_end(argptr);
return(returnValue);
}
提前感谢您的任何答案!
答案 0 :(得分:3)
execlp
是variadic function所以you can not create a wrapper。您需要调用execvp
传递通过迭代va_list创建的数组字符串。
答案 1 :(得分:1)
您无法将va_list
传递给可变参数函数;它根本不起作用。你唯一能做的就是自己将参数列表读入一个数组,直到你到达null终止符,然后将数组传递给execvp
。