Unix Socket Programming Question:

How would I put my socket in non-blocking mode?

Tweet Share WhatsApp

Answer:

Technically, fcntl(soc, F_SETFL, O_NONBLOCK) is incorrect since it clobbers all other file flags. Generally one gets away with it since the other flags (O_APPEND for example) don't really apply much to sockets. In a similarly rough vein, you would use fcntl(soc, F_SETFL, 0) to go back to blocking mode.

To do it right, use F_GETFL to get the current flags, set or clear the O_NONBLOCK flag, then use F_SETFL to set the flags.

And yes, the flag can be changed either way at will.

Download Unix Socket Programming PDF Read All 62 Unix Socket Programming Questions
Previous QuestionNext Question
How come only the first part of my datagram is getting through?What is LILO?