[리눅스 시스템 프로그래밍] 6.2 현재 작업 디렉토리 확인 및 디렉토리 변경, getcwd, chdir, fchdir

리눅스 시스템에서는 현재 작업 디렉토리를 확인하는 getcwd, 작업 디렉토리를 변경하는 chdir과 fchdir 함수를 제공하고 있어요. chdir 함수는 입력 인자로 디렉토리 경로 명을 입력 인자로 받고 fchdir 함수는 파일 디스크립터를 받습니다.

#include <unistd.h >

char *getcwd(char *buf, size_t size);

반환 값: 실패 시 NULL, 성공 시 buf

int chdir(const char *pathname);

int fcndir(int fd);

반환 값: 실패 시 -1, 성공 시 0

다음은 현재 작업 디렉토리를 출력하고 난 후에 main 함수 인자로 전달받은 디렉토리로 현재 작업 디렉토리를 변경하는 예제 코드입니다.

/**********************************************************************
* ex_chdir.c                                                          *
* exmple source – change current working directory                    *
**********************************************************************/

#include <linux/limits.h>
#include <unistd.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    if(argc != 2)
    {
        fprintf(stderr, "Usage: %s <path name>\n", argv[0]);
        return 1;
    }
    char name[PATH_MAX];
    printf("Before Current Directory:%s\n",getcwd(name,PATH_MAX));
    if(chdir(argv[1])==-1)
    {
        printf("failed, change directory\n");
    }
    else
    {
        printf("After Current Directory:%s\n",getcwd(name,PATH_MAX));
    }

    return 0;
}
[그림 6.3] ex_chdir 실행 화면
[그림 6.3] ex_chdir 실행 화면