Ben BSD soket programlama bağlamında üzerinde çalıştırmak her örnekte ve tartışmada, o I tıkanmasızdır için bir dosya tanıtıcı set önerilen yoludur / Ç modu kullandığını görünüyor O_NONBLOCK
bayrağı için fcntl()
, örneğin,
int flags = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
On yılı aşkın süredir UNIX'te ağ programlama yapıyorum ve her zaman FIONBIO ioctl()
bunu yapmak için çağrıyı kullandım :
int opt = 1;
ioctl(fd, FIONBIO, &opt);
Asla nedenini pek düşünmedim. Sadece bu şekilde öğrendim.
Birinin veya diğerinin olası yararları hakkında herhangi bir yorumu olan var mı? Taşınabilirlik lokusunun biraz farklı olduğunu hayal ediyorum, ancak ioctl_list(2)
bireysel ioctl
yöntemlerin bu yönüne ne ölçüde hitap etmediğini bilmiyorum .