먼저 이 함수는 다중 터미널 프로그램이나 서버 프로그램에서 종종
사용하는데요 이곳에 정확히 설명하기에는 너무 힘들것 같군요.
대체적으로 개요만 말하면요.
유닉스 계열에서는 메모리에 올려져 돌아가고 있는 명령어 집단(?)을
프로세스라고 하죠.
그 하나의 프로세스들은 파일 디스크립터를 1024개를 가질 수 있어요.
물론 저 숫자는 고정된 것은 아니구요.
그중 0은 표준 입력, 1은 표준 출력, 2는 표준 에러로 이미 할당이 되어 있지요.
따라서, 자신이 open(), socket()같은 것을 사용하여 새 파일을 열면
3부터 새로 할당이 됩니다. (맞나?)
그 단순한 번호가 파일 디스크립트입니다.
이러한 파일 디스크립트가 여러 개가 열려 있을 때,
어느 디스크립터에 입력(혹은 출력 등)이 있는지를 알아내는 것이
select()함수 입니다.
이는 비트를 다루므로 먼저 전부 0으로 셋팅합니다.
: FD_ZERO(&readfds); <= 요부분
다음 관심있는 파일 지시자를 셋팅합니다.
: FD_SET(STDIN, &readfds); <= 요부분
즉, 표준 입력을 감시하겠다는 거죠.
그리고 select()를 실행하여 입력의 여부를 검사하는 것이고요.
시간은 2.5초간
그리고 언제나 +1을 해주는 것은 아니고 표준 입력의 경우에
그러합니다.(??) 최대 숫자임
보다 정확히 알려면 잘 아는 사람에게 술한잔 사주고 시간을 두고
자세히 물어봐야 할 것입니다.