파일 관련 각종 정보를 알아볼 수 있는 system call
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
int stat(const char *pathname, struct stat *buf)
int fstat(int filedes, struct stat *buf)
fstat은 open된 file에 대한 정보를 획득한다.
buf엔 file 정보가 저장된다.
소유권자는 파일을 생성한 사람이다. user-id인 uid로 구분한다.
사용자는 파일을 사용하는 사람이다. effective user-id인 euid로 구분한다.
특정 file에 대한 읽기/쓰기/실행이 가능한지 확인하는 system call
#include <unistd.h>
int access(const char *pathname, int amode)
특정 파일의 access permission을 변경하는 system call
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode)
int fchmod(int fd, mode_t mode)
소유권자만 사용 가능하다.
기존 파일에 새로운 이름을 부여하는 system call
한 파일에 하나 이상의 이름 : 각 이름을 "hard link"라 부른다.
link count : link의 수
#include <unistd.h>
int link(const char *original_path, const char *new_path)
return 값 : 0 or -1(new_path가 이미 존재하면)
link의 제한점으로, directory에 대한 link 생성은 불가능하다. 또한 다른 file system에 있는 file에 대해서는 link 생성이 불가능하다. 따라서 symbolic link를 이용한다.
#include <unistd.h>
int symlink(const char *realname, const char *symname)
open system call에 의해 open이 가능하다. 단지, realname 파일이 open된다. 따라서 symname안에 있는 내용을 보고 싶다면, readlink를 사용한다.
symbolic link가 가리키는 파일이 아닌 symbolic link 자체의 파일 정보를 받고 싶다면, lstat을 사용한다.
directory file에 .과 ..을 넣어서 생성
#include <sys/types.h>
#Include <sys/stat.h>
int mkdir(const char *pathname, mode_t mode)
directory가 비어 있을 경우에만 성공
#include <unistd.h>
int rmdir(const char *pathname)
#include <stdio.h>
int rename(const char *oldpathname, const char *newpathname)
file과 directory 둘 다 rename 가능하다.
newpathname이 존재해도 -1이 아니다. 기존 file을 제거하고 새 이름을 부여한다.
#include <unistd.h>
char *getcwd(char *name, size_t size)
#include <unistd.h>
int chdir(const char *path)
#include <sys/types.h>
#Include <dirent.h>
DIR *opendir(const char *dirname)
DIR형의 data structure에 대한 pointer를 return. 실패 시 null pointer return.
#include <dirent.h>
int closedir(DIR *dirptr)
#include <sys/types.h>
#Include <dirent.h>
struct dirent *readdir(DIR *dirptr)
#include <sys/types.h>
#Include <dirent.h>
void rewinddir(DIR *dirptr)