2017-10-28 1 views
-1

저는 많은 것을 수색했지만, 아직 답을 찾을 수 없습니다. 쉘처럼 작동하고 사용자에게 원하는 명령을 묻는 프로그램이 있는데 execlp를 사용하여이 새 프로세스를 엽니 다. 명령이 실행되었는지 또는 수신 된 명령이 존재하지 않는지를 쉽게 알 수있는 방법이 있는지 알고 싶었습니다. 1과 ENOENT에 errno를 설정 - 지정된 찾을 수없는 경우, 다음 때 execlp가 반환됩니다exec에 주어진 명령이 있다면 어떻게 알 수 있습니까?

execlp(argv[0], argv[0], (char *)NULL); 
+0

"execlp의 반환 값은 무엇입니까?"라는 Google의 검색이 유용 할 수 있습니다. 게시하기 전에 질문에 대해 생각하는 것도 유용합니다. 당신이 무언가를 한 결과를 결코 확인하지 못한다면, 그것이 효과가 있었는지 아닌지 어떻게 알 것입니까? –

+0

'execl()은 아마도 장기간 사용할 함수가 아닙니다. 필요한 인수의 개수를 알지 못하고'execlp()'가 컴파일 타임에 인수의 갯수를 결정해야하기 때문에 일반적으로'execvp()'를 사용할 필요가 있습니다. –

답변

1

:

는 다음 코드를 사용합니다. 그러면 확인하실 수 있습니다.

if (errno == ENOENT) 
    printf("Command not found"); 

부모 프로세스에서 확인하십시오.

+0

EPERM (권한 없음) 또는 여러 가지 다른 오류도 설정할 수 있습니다. 하지만 당신 말이 맞아. 반환하면 실패합니다. 값을 확인할 필요조차 없습니다. 돌아 오면 실패했다. –

관련 문제