2

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

提前感谢您的任何答案!

4

2 回答 2

3

execlp是一个可变参数函数,所以你不能为它创建一个包装器。您将需要调用execvp通过迭代您的 va_list 创建的数组字符串。

于 2011-07-28T17:48:37.653 回答
1

您不能将 a 传递va_list给可变参数函数;它根本不是那样工作的。你唯一能做的就是自己将参数列表读入一个数组,直到你到达空终止符,然后将数组传递给execvp.

于 2011-07-28T17:53:59.410 回答