2011-07-28 3 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으로 전달하면됩니다.