2016-07-26 6 views
0

fork 명령을 사용하여 디렉토리를 변경할 수 있습니까?C에서 fork로 cd 명령 사용

childpid = fork(); 

if (childpid >= 0) 
{ 
    if (childpid == 0) 
    { 
     ret = execvp(argv[0],argv); 
     exit(ret);  
    } else { 

      waitpid(childpid,&status,0); 
      ret = WEXITSTATUS(status); 
    } 
} 

나는 등, ls 같은 pwd을 기본 명령을 입력하고있어 때 위 .. 잘 작동는 CD 기능을 사용하는 방법을 구현할 수 : 내 코드에 너무 많은 것없이 나는 다음이 ? cd .. 명령을 입력 할 수는 있지만 아무 것도하지 않습니다. 내 프로그램 /Users/username/Desktop/에있는 경우

예를 들어 나는 /Users/username/로 이동하거나 내가 chdir에 대한 몇 가지 물건을 본 적이 /Users

로 바로 이동 할 수있는 등 cd .. 같은 명령을 사용하고 싶습니다하지만 난 아니에요 정확하게 작동하는 방법/사용 방법. 당신이 chdir는 현재 프로세스의 작업 디렉토리를 변경하는 가장 좋은 방법입니다 했나요으로

+3

현재 디렉토리가 각 프로세스에 따라 다릅니다. 쉘 프로세스가/Users/username/Desktop에 있고'cd ..'라고 입력하면 새로운 프로세스가 생성되고 새로운 프로세스는/Users/username으로 변경되지만 쉘 프로세스는 디렉토리를 변경 한 프로세스와 다른 프로세스. – immibis

답변

1

는 쉘 명령은 cd에만 만들 것 fork과 같이 명령 (그리고 부모 프로세스)를 실행하는 과정의 작업 디렉토리를 변경할 것 새로운 과정.

CHDIR 사용을 위해 당신은 시도 할 수 :

#include <stdio.h> 
#include <unistd.h> 
int main() { 
    char cwd[4096]; 
    fputs(getcwd(cwd,4096),stdout); // will print the current working directory 
    fputs("\n",stdout); 
    chdir("/"); // change directory 
    fputs(getcwd(cwd,4096),stdout); // print new working directory 
    fputs("\n",stdout); 
}