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可変引数関数であるため、ラッパーを作成することはできませんexecvpva_list を繰り返し処理して作成された配列文字列を渡すために呼び出す必要があります。

于 2011-07-28T17:48:37.653 に答える
1

va_list可変個引数関数にaを渡すことはできません。それは単にそのようには機能しません。実行できる唯一のことは、nullターミネータに到達するまで引数リストを自分で配列に読み込んでから、配列をに渡すことexecvpです。

于 2011-07-28T17:53:59.410 に答える