파일 서술자

컴퓨터 프로그래밍 분야에서 파일 서술자(file descriptor) 또는 파일 기술자는 특정한 파일에 접근하기 위한 추상적인 키이다. 이 용어는 일반적으로 POSIX 운영 체제에 쓰인다. 마이크로소프트 윈도우와 C 표준 입출력 라이브러리 환경에서 "파일 핸들"(file handle)이라는 말이 선호되지만 후자의 경우 기술적으로 다른 객체이다.

POSIX에서 파일 서술자는 정수, 곧 C형 int를 말한다. 모든 프로세스가 갖추어야 하는 표준 POSIX 파일 서술자는 다음과 같이 세 개가 있다.

파일 서술자의 연산자 

현대의 유닉스는 일반적으로 파일 서술자에 다음과 같은 연산자를 제공한다.

파일 서술자 만들기 

 open(), open64(), creat(), creat64()
 socket()
 socketpair()
 pipe()

파일 서술자 가져오기 
 dirfd()
 fileno()

한 개의 파일 서술자를 위한 연산자 

 read(), write()
 readv(), writev()
 pread(), pwrite()
 recv(), send()
 recvmsg(), sendmsg()
 sendfile()
 lseek(), lseek64()
 fstat(), fstat64()
 fchmod()
 fchown()
 fdopen()
 gzdopen()
 ftruncate()
 fsync()
 fdatasync()
 fstatvfs()

여러 개의 파일 서술자를 위한 연산자 

 select(), pselect()
 poll(), epoll()
 kqueue(), kevent()

파일 서술자 테이블을 위한 연산자 

 close()
 dup()
 dup2()
 fcntl (F_DUPFD)
 fcntl (F_GETFD 및 F_SETFD)

프로세스 상태를 수정하는 연산자 

 fchdir()
 mmap()

파일 잠금 

 flock()
 fcntl (F_GETLK, F_SETLK 및 F_SETLKW)
 lockf()

소켓 

 connect()
 bind()
 listen()
 accept()
 getsockname()
 getpeername()
 getsockopt(), setsockopt()
 shutdown()

기타 

 ioctl()

새로 출시되는 연산자 

새로운 일련의 파일 서술자의 연산자들이 수많은 C 라이브러리와 더불어 솔라리스와 리눅스에 추가되고 있다. 이로써 앞으로 출시될 POSIX 버전에 표준으로 자리잡게 된다.

 openat()
 faccessat()
 fchmodat()
 fchownat()
 fstatat()
 futimesat()
 linkat()
 mkdirat()
 mknodat()
 readlinkat()
 renameat()
 symlinkat()
 unlinkat()
 mkfifoat()
 fdopendir()

같이 보기 
 lsof - 공개 파일 연산자에 대한 정보를 보여 주는 유틸리티

각주 

유닉스
POSIX