2013-10-20 3 views
0

fork 및 exec를 사용하여 $ PATH에 나열된 모든 디렉토리에서 디렉토리를 검색 할 수있는 C 프로그램을 작성하는 작업이 있습니다. 내 질문에 내가 다음 getenv() (남성 3의 GetEnv)를 사용하여 PATH 환경 변수를 얻을 수 있습니다 execl 함수

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 
#include <sys/wait.h> 

int main(int argc, char* argv[]) { 
    int pid = 0; 
    for(int i = 0; i < argc; i++) { 
    if (pid = fork() != 0){ 
     printf("Arg%d: %c\n", i, *argv[i]); // replace with exec ls -l <dir>/<arg> 
     return 0; 
    } 
    } 

    return 0; 
} 
+4

['getenv()'] (http://en.cppreference.com/w/c/program/getenv)를 사용 하시겠습니까? –

+1

'argv [0]'은 * 당신의 * 프로그램의 이름이라는 것을 기억하십시오. –

+0

@JOACHIMPILEBORG 당신 말이 맞아요, 나는 그것을 놓쳤습니다. –

답변

3

내 코드에서 사용할 수있는 방식으로 $ 경로에서 경로를 얻는 방법이다. 문자열을 char*에 복사 한 다음 ':'을 구분 기호로 사용하여 strtok() (man 3 strtok)으로 분할하십시오. getenv()에서 가져온 포인터가 실제로 환경 내부를 가리키고 strtok()이 전달하는 인수를 수정하기 때문에 원래 문자열을 새로운 char*으로 복사해야합니다. 그런 다음 각 하위 문자열에 대해 루프를 분기 할 수 있습니다.

+0

감사합니다. –

관련 문제