Tôi đang gặp phải sự cố khi sử dụng chức năng chọn trong Unix.Có cần phải đặt lại fd_set giữa cuộc gọi hệ thống được chọn không?
Tôi có một máy chủ đang chờ kết nối. Trước tiên, tôi thêm bộ mô tả tệp ổ cắm nghe listener
vào fd_set readfds
sử dụng FD_SET(listener, readfds)
và sau đó tôi sử dụng nó trong select()
.
Khi tôi nhận kết nối, tôi gọi accept()
và đặt readfds
khi được chọn với bộ mô tả tệp được chấp nhận và bắt đầu nhận dữ liệu từ kết nối. Tuy nhiên, khi tôi kiểm tra mã trong strace, lựa chọn không hiển thị người nghe trong readfds
trong khi select()
đang thực hiện lần thứ hai.
Tôi có cần đặt lại bộ mô tả tệp trình nghe bằng cách sử dụng FD_SET(listener, readfds)
trước khi gọi lại select()
nữa không?
Cảm ơn.
Cũng không phải trên Linux, giá trị thời gian chờ có thể được sửa đổi và do đó cũng cần được khởi tạo lại. Tiêu chuẩn cho phép điều này nhưng không phổ biến trong các hương vị khác của unix. –