입출력 함수를 통한 프로그램을 작성해본 경험이 있다면 아래와 같은 형태의 코드를 본 적이 있을 것입니다. 파일/콘솔 등에서 사용자의 입력을 받고 그에 대한 적절한 처리를 통해 출력을 수행하는 프로그램의 일부입니다. (예제에서는 입력받은 값을 그대로 출력합니다.) while((str_len = read(fd_in, buf, BUF_SIZE) > 0) { write(fd_out, buf, str_len); } 위와 같은 구조의 I/O를 blocking I/O라고 합니다. 입력이 수행되는 동안은 출력을 할 수 없고, 출력이 수행되는 동안에는 입력을 수행할 수 없습니다. 따라서 많은 수의 파일/소켓 등에 I/O를 동시에 수행해야 하는 경우에는 적절한 구조가 아닙니다. 몇 가지 해결방안 입력과 출력이 동시에 수행..