In jedem Beispiel und jeder Diskussion, auf die ich im Zusammenhang mit der BSD-Socket-Programmierung stoße, scheint es, dass die empfohlene Methode, einen Dateideskriptor auf den nicht blockierenden E / A-Modus zu setzen, darin besteht, das O_NONBLOCK
Flag zu verwenden fcntl()
, z
int flags = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
Ich mache seit über zehn Jahren Netzwerkprogrammierung unter UNIX und habe den FIONBIO ioctl()
Aufruf immer dazu verwendet :
int opt = 1;
ioctl(fd, FIONBIO, &opt);
Ich habe nie wirklich darüber nachgedacht, warum. Habe es gerade so gelernt.
Hat jemand einen Kommentar zu den möglichen jeweiligen Vorzügen des einen oder anderen? Ich stelle mir vor, dass sich der Portabilitätsort etwas unterscheidet, weiß aber nicht, inwieweit ioctl_list(2)
dieser Aspekt einzelner ioctl
Methoden nicht angesprochen wird .