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



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

Answer / chaitanya

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.

Is This Answer Correct ?    1 Yes 0 No

Post New Answer

More Unix Socket Programming Interview Questions

Can multiple sockets use the same port?

0 Answers  


How can I set the timeout for the connect() system call?

0 Answers  


How do Sockets Work?

1 Answers  


How do I send [this] over a socket?

1 Answers  


How are unix domain sockets implemented?

0 Answers  






How do I get the port number for a given service?

1 Answers  


How can I bind() to a port number < 1024?

1 Answers  


How many socket connections can a server handle?

0 Answers  


What is LILO?

2 Answers  


How many sockets can a cpu have?

0 Answers  


What is Mac, and how is it different from PC? Which one is better for professional users, and why

1 Answers   Evolving Systems, IBM,


What is a socket api?

0 Answers  


Categories