파일 디스크립터는 간단하게 보자면 파일을 관리하기위해 매겨놓은 숫자입니다.
이 숫자는 일반적인 상황에서는 음수가 될 수 없고, 기본적으로 0, 1, 2는 프로그램이 시작될 때 기본적으로 표준입력, 표준출력, 표준에러로써 사용되고,
그 이후에 파일을 사용하게 된다면 사용되지 않은 숫자 중에서 가장 작은 숫자가 fd로 부여됩니다.
만약 잘못된 파일에 접근한다면 일반적인 상황이 아니기에 파일디스크립터는 -1로써 에러가 나게 됩니다.
간단한 예시를 봅시다.
int main(void)
{
int fd_1;
int fd_2;
fd_1 = open("a.out", O_RDONLY);
printf("fd_1 = %d\n", fd_1);
fd_2 = open("a.out", O_RDONLY);
printf("fd_2 = %d\n", fd_2);
}
fd_1 = 3
fd_2 = 4
첫 번째 파일을 열었을때의 fd_1은 3, 그 다음 열었을때의 fd_2는 4가 된다. 이런 식으로 순서대로 숫자가 부여되고,
만약 이전에 사용된 파일디스크립터가 풀린다면 어떻게 될까요??
int main(void)
{
int fd_1;
int fd_2;
fd_1 = open("a.out", O_RDONLY);
printf("fd_1 = %d\n", fd_1);
close(fd_1);
fd_2 = open("a.out", O_RDONLY);
printf("fd_2 = %d\n", fd_2);
close(fd_2);
}
fd_1 = 3
fd_2 = 3
위 내용처럼 사용되고 있지 않은 숫자중 가장 작은 숫자가 파일디스크립터로 부여되기 때문에 fd_2도 3번으로 되는 걸 알 수 있습니다.
이런 식으로 3, 4, 5 처럼 차례대로 부여되다가 3번이 다 사용되었다면 3, 6, 7 이런 식으로 사용되지 않는 숫자 중 가장 작은 숫자가 됩니다.
[get_next_line] get_next_line에 대해 알아보자.
[get_next_line] 파일디스크립터에 대해 알아보자
[get_next_line] 정적변수, static variable에 대해 알아보자
[get_next_line] get_next_line! 어떤 식으로 구현해야할까?