C -将va_list传递给哨兵终止函数-需要execlp()的包装器



我正在尝试为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

相关内容

  • 没有找到相关文章

最新更新