2017-12-02 6 views
-2

내가보기에 명확하게 이해되지 않았기 때문에 문제를 다시 작성하고 있습니다. C에서 원래 쉘이하는 모든 명령을 지원해야하는 자체 쉘을 구현합니다. 가 이미 당신은 쉽게 그렇게 할 수 있도록 execvp() 또는 system() 기능을 사용하지 않고 C에 기존의 모든 유닉스 bash는 명령을 실행에C에서 터미널의 명령에 대한 exec 파일의 디렉토리를 얻는 방법은 무엇입니까?

문제입니다.

이렇게하려면 모든 종류의 UNIX 명령으로 구성 될 수있는 필요한 모든 디렉터리를 검색해야합니다. 나는 단지 이것을 알고 싶다.

PATH 환경 변수의 모든 디렉토리를 검사했을 때 모든 배포판에서 가능한 모든 UNIX 명령을 지원한다는 것을 정말로 확신 할 수 있습니까? (내 컴퓨터에서 /bin/되고, /usr/bin/, /usr/local/bin)

은 또한 당신이 realpath()라는 삽입 된 파일의 전체 디렉토리를 유도 할 수있는 방법을 발견했다. 그러나 불행히도, 내 자신의 셸에 삽입 된 명령의 디렉토리를 얻으려고하면 (null)을 반환합니다.

이 문제를 해결하기 위해 나에게 무엇을 제안합니까? 마지막 해결책으로, 루트에서 명령을 삽입하기 위해 재귀 적으로 전체 컴퓨터를 검색하는 것이 이치에 맞습니까?

불명확 한 점이 있으면 명확히 알려 주시기 바랍니다. 예제 코드로 대답하고 질문에서 명확하게 설명되어 있다고 생각되면 [보류 중] 태그를 지우면 매우 감사 할 것입니다.

미리 감사드립니다. 먼저

+1

'PATH' 디렉토리 목록 env로 연결할 수있는 파일을 찾으려고합니다. 변하기 쉬운. –

+1

힌트 :'/ bin'은'PATH' 시스템 변수에 있습니다. –

+0

@ Jean-FrançoisFabre PATH env의 내용을 찾으라고 제안합니다. 변하기 쉬운? 그렇다면 모든 가능한 UNIX 명령이 PATH 시스템 변수에만 있는지 확인할 수 있습니까? –

답변

관련 문제