2013-03-27 4 views
0

execve 명령을 사용하려고하면 마지막 2 개의 인수에 대한 오류가 발생합니다.C++ execve 명령에서 문자열을 char [] *로 어떻게 변환합니까?

 #include <unistd.h>   
    const char * c = enviorment.c_str(); 
    execve(full.c_str() , cl.getArgVector(), c); 

내가 같은 복사 문자열에서 여러 가지 옵션을 사용하여 시도했다 :

char *temp2 = new char[(path).size()+1]; 
strcpy (temp2, cl.getCommand()); 
    execve(full.c_str() , cl.getArgVector(), temp); 

을하지만 그것이 작동 및 오류 메시지가받을 얻을 수 없어요 :

오류 : const char *, char * const *, char * const *)

+0

'환경'은 어떻게 생겼습니까? ''KEY = VALUE ''형식의 단일 키/값 쌍입니까, 아니면 여러 개의 구분 된 키 - 바입니까? –

+0

@ JorgeIsraelPeña 나는 환경 특유의 것 같다고 생각한다. (* ba-dun-tss *) –

+0

@ RichardJ.RossIII 아, 사실 맨 페이지에서 관습이지만 꼭 시행해야하는 것은 아니다. 나는''KEY = VALUE ''형식의 문자열 배열이 필요하다는 인상을 받고 실수로. 그럼에도 불구하고 그의 환경의'execve'가'envp' 매개 변수를 어떻게 기대하는지에 따라'environment' 문자열을 분리해야 하는지를 물었습니다. –

답변

0

환경 변수 배열은 문자열 (char *)의 배열입니다. 하나 문자열. 배열의 마지막 요소로 NULL 값이 필요합니다.

배열의 마지막 char *가 NULL인지 확인하기 위해 c1.getArgVector()를 구현하는 데 사용하는 코드를 모방합니다.

+0

끝에 NULL이 누락되었습니다. 정말 고마워! – user1797035