我正在尝试为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);
}
提前感谢任何答案!
execlp
是一个可变函数,因此您不能为它创建包装器。您需要调用execvp
,传递通过迭代va_list创建的数组字符串。
不能将va_list
传递给可变函数;事情根本不是这样的。您唯一能做的就是自己将参数列表读入数组,直到到达空终止符,然后将该数组传递给execvp
。