유닉스는 모든 입출력을 파일로 봅니다.
파일을 읽고쓰는 것은 물론이고 하드웨어 센서와 네트워크 등도 마치 파일을 읽고쓰는 것처럼 처리합니다.
프로세스가 파일/네트워크/하드웨어 입출력을 하려고 대상을 열면(유닉스 시스템호출 open()
) (정수값인) file descriptor가 생깁니다.
줄여서 fd라고 쓰고, /proc/PID/fd
에 보이는 그 fd입니다.
우리가 /etc/security/limits.conf
파일에 nofile
을 설정하면,
프로그램의 최대 fd 개수가 늘어나고 ulimit -a
출력의 open files
줄에서 확인할 수 있습니다.
프로그램을 실행하면, 쉘은 세가지 fd를 만들어서 프로그램에 붙입니다.