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