2014-06-06 2 views
0

사용자가 명령 (예 : ls -l)을 계속 묻는 프로그램을 만들려고합니다. 입력을 토큰 화하여 명령의 char * . execvp를 호출하여 다음 명령을 실행하십시오.execvp가 다른 코드와 함께 작동하지 않습니다

char * paramList [2] = { "/ bin/ls", "-l"};

execvp (paramList [0], paramList);

아무 일도 발생하지 않습니다. 나는 execvp 호출과 ls -l 명령을 제외하고는 아무 것도없는 다른 프로그램을 가지고있다. 그러나 엉덩이 곧 아무것도 추가로, 심지어 사용하지 않는 변수는 코드가 작동을 멈 춥니 다.

답변

0

배열 (paramList)은 1 개의 짧은 항목입니다.

execvp의 두 번째 인수로 주어진 배열은 NULL 항목으로 끝나야합니다. 따라서 배열에 현재 3 개의 값이 있습니다.

char* paramList[3] = { "/bin/ls", "-l", NULL }; 
execvp(paramList[0], paramlist); 

예상대로 작동해야합니다.

char* paramList[] = { "/bin/ls", "-l", NULL }; 

및 컴파일러를 계산하자

아마 더 나은/쉽게 사용할 수 있습니다.