chọn() được định nghĩa là:Query trên Chọn hệ thống Gọi
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout);
NFDS đại diện cho mô tả tập tin cao nhất trong tất cả các bộ trao cộng thêm một. Tôi muốn biết tại sao dữ liệu này được yêu cầu cho select() khi thông tin fd_set có sẵn.
Nếu FD trong tập hợp là, 4, 8, 9, giá trị nfds sẽ là 10. Chọn() moniter fds 9,8,7,6,5,4?
Nhưng số lượng bit trong int là 32, nhưng làm cách nào để theo dõi bất kỳ fd nào có giá trị lớn hơn 31 – Poorna
ai đó có thể trả lời nhận xét này? – euphoria83
@Shishir: Posix định nghĩa 'fd_set' là cấu trúc. Các nội bộ được thực hiện xác định, nhưng một thực hiện phổ biến là cho các cấu trúc để chứa một mảng của longs với đủ bit trong mảng để trang trải tất cả các fd có thể. Điều này làm việc vì Posix cũng yêu cầu 'mở' để trả về" bộ mô tả tệp không được sử dụng số thấp nhất ". Vì vậy, bạn sẽ không vượt quá phạm vi của mảng trừ khi bạn có FD_SETSIZE tệp đang mở. http://pubs.opengroup.org/onlinepubs/007904975/basedefs/sys/select.h.html – indiv