[카테고리:] <span>리눅스 시스템 프로그래밍</span>

리눅스 시스템에서는 현재 작업 디렉토리를 확인하는 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 실행 화면

리눅스 시스템 프로그래밍