2011-07-28 6 views
2

execlp()のラッパーを作成しようとしています。 なぜこれは機能しませんか?それはセンチネルですか?C - va_listをsentinel-terminated関数に渡す - 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

Execlp( "./ nameOfProcess"、./nameOfProcess "、arg1、arg2);を呼び出すと、プロセスがオーバーロードされません。 – M33

答えて

1

variadic関数にva_listを渡すことはできません。それは単にそのようには機能しません。あなたが行うことができる唯一のことは、ヌルターミネータに達するまで、引数リストを自分で配列に読み込んでから、配列をexecvpに渡すことです。

関連する問題