char [] [] 유형 (일명 문자열 배열)의 데이터를 사용하여 execvp를 실행하려고합니다. 이제는 execvp()
이 첫 번째 매개 변수로 문자열에 대한 포인터를 가져 와서 두 번째 문자열 배열에 대한 포인터를 사용한다는 사실을 알게되었습니다. 사실 내가 전에 성공적으로 사용한 적이 있습니다. 그러나 올바른 조합을 얻을 수없는 것 같습니다. 포인터 & 아래에서 작동하도록 문자열을 - 내가 뭘하려고하면 호환되지 않는 것으로 간주됩니다!2D 배열 매개 변수에서 execvp 실행
어떤 도움이라도 매우 감사드립니다 :) - 코드를 약간 압축하여 헤더를 제거했습니다!
struct userinput {
char anyargs[30][30]; //The tokenised command
};
int main() {
struct userinput input = { { { 0 } } }; //I believe is valid to set input to 0's
struct userinput *inPtr = &input; //Pointer to input (direct access will be unavailable)
strcpy(inPtr->anyargs[0], "ls"); //Hard code anyargs to arbitary values
strcpy(inPtr->anyargs[1], "-lh");
char (*arrPointer)[30]; //Pointer to an array of char *
arrPointer = &(inPtr->anyargs[0]);
printf("arrPointer[0]: %s, arrPointer[1]: %s\n", arrPointer[0],
arrPointer[1]);
printf("At exec case; ");
execvp(arrPointer[0], arrPointer);
perror("Command not recognised"); //Prints string then error message from errno
return 0;
}
'arrPointer = (inPtr-> anyargs);를 쓰지 않으셨습니까? &? – Christophe
예 - 제가 틀렸다면 -> 연산자가 참조를 해제하고 값을 반환합니다. arrPointer 및 execvp가 값을 직접 가져 가지 않으므로 값을 가리키는 포인터가 필요하지 않습니다. – davidhood2