현재 작업 디렉터리의 위치 검색 : getcwd(), get_current_dir_name()
현재 작업 디렉터리의 위치를 파악할 때 사용하는 함수는 getcwd(), get_current_dir_name(), getwd()이다.
이 중, getcwd(), get_current_dir_name() 함수에 대해 알아보자. (※ 현재 디렉터리의 위치를 검색할 때 쓰는 명령어는 pwd이다.)
현재 작업 디렉터리 위치 검색 (1) : getcwd()
getcwd() 함수는 현재 디렉터리의 절대 경로를 리턴한다.
#include <unistd.h>
char *getcwd(char *buf, size_t size);
buf : 현재 디렉터리의 절대 경로를 저장할 버퍼 주소, size : 버퍼의 크기
함수 인자를 지정하는 방법은 아래 3가지 중에서 선택한다.
1) buf에 경로를 저장할 만큼 충분한 메모리를 할당하고, 그 크기를 size에 지정
2) buf에 NULL을 지정하고, 할당이 필요한 메모리 크기를 size에 지정
3) buf에 NULL을 지정하고, size는 0으로 지정
현재 작업 디렉터리 위치 검색 (2) : get_current_dir_name()
get_current_dir_name() 함수는 시스템이 자동으로 메모리를 할당해 현재 디렉터리의 절대 경로를 저장하고 반환한다.
#include <unistd.h>
char *get_current_dir_name(void);
getcwd(NULL, 0)과 동일하게 동작한다고 생각하면 된다.
디렉터리 이름 변경 : rename()
#include <stdio.h>
int rename(const char *oldpath, const char *newpath);
oldpath : 바꿀 파일/디렉터리명, newpath : 새 파일/디렉터리명
만일, 두 번째 인자로 지정한 이름과 동일한 이름이 기존에 있으면, 해당 디렉터리를 지운다. 실행 도중 오류가 발생하면 원본과 새로운 디렉터리명이 모두 남는다.
rename() 함수는 수행에 성공하면 0을, 실패하면 -1을 반환한다.
디렉터리 이동 : chdir(), fchdir()
디렉터리 이동 (1) : chdir() 함수
chdir() 함수는 이동하려는 디렉터리의 경로를 인자로 받으며, 절대 경로(absolute path)와 상대 경로(relative path) 둘 다 사용 가능하다.
디렉터이 이동에 성공하면 0을, 실패하면 -1을 반환한다.
#include <unistd.h>
int chdir(const char *path);
path : 이동하려는 디렉터리 경로
디렉터리 이동 (2) : fchdir() 함수
fchdir() 함수는 파일 디스크립터를 인자로 받는다. 파일 디스크립터는 open()함수로 디렉터리를 열고 돌려받는 것이다.
디렉터리 이동에 성공하면 0을, 실패하면 -1을 반환한다.
#include <unistd.h>
int fchdir(int fd);
fd : 이동하려는 디렉터리의 파일 디스크립터
'Fundamental of Software Develop > : : Linux System Programming' 카테고리의 다른 글
Linux System Programming: 파일 정보 검색 (0) | 2023.11.10 |
---|---|
디렉터리 내용 읽기 (0) | 2023.11.09 |
디렉터리 생성과 삭제 : mkdir(), rmdir() (0) | 2023.11.09 |
명령행 인자(Command-Line Arguments) (0) | 2023.11.09 |
동적 메모리 할당 (0) | 2023.11.09 |