execve를 사용하여 ls 명령을 실행하려고합니다. 현재 내가 다음 인수와 함께 실행 해요 :execve와 함께 새 경로를 사용하여 ls 명령을 실행하십시오.
execve(args[0], args, env_args)
//args looks like {"ls", "-l", "-a", NULL}
//env_args looks like {"PATH=/bin", "USER=me", NULL}
나는 이것이 내 PATH에서 LS를 찾아 볼 것을 의미 나의 새로운 env_args를 사용하여 ls 명령을 실행 한 할 것으로 예상 무엇. 그러나이 코드는 실제로 아무 것도하지 않으며 코드를 실행할 때 출력없이 내 명령 프롬프트로 돌아갑니다.
동일한 args []를 사용하여 execvp와 ls가 작동하고 현재 경로를 검색했습니다.
내가 잘못하고있는 것을 말해 줄 수 있습니까?
내가하려는 것은 내 자신의 환경을 만들고 내보낼 수있는 쉘 프로그램을 작성하고 exec가 char *로 정의한 환경을 사용하도록하는 것입니다. 본질적으로 나는 env_args를 사용하여 vars를 추가하고 제거하는 함수를 작성하고 exec를 호출하면 { "ls", "-l", NULL}에 exec를 호출하여 새로운 환경을 보일 수 있기를 원한다. ls라는 유효한 프로그램의 경로 변수. 나는 이것이 내가 조금 더 잘하고있는 것을 설명하기를 바란다. 나는 extern 환경 var이이 경우에 나를 위해 일할 것이라고 생각하지 않는다.
괜찮지 만 execvp에서 내 환경에 정의 된 것과 다른 경로를보고 싶다고 말하고 싶습니까? 그게 내가 찾고있는 기능의 종류입니다 – james
두 번째 생각에, 나는 환경이 내가 원하는 것이라고 생각하지 않습니다. 나는 아직도 이것을하는 방법을 모르겠다. – james
왜 환경을 설정하는 것이 답이 아니라고 생각합니까?당신의 컴퓨터에서'ls' 파일은 어디에 있습니까? –