Indeed on Linux, despite my dfferent tests, I've never had the "EAGAIN" error. On the opposite, on OpenBSD 4.6 I receive a lot of those errors during the write process.
OpenBSD is reporting that this error pop's-up because the resource is not available. Within a non-blocking context this sounds logic. Indeed, the resource can still be busy with the previous write when we try to send the new one.
Now the valid question is why we don't have such behaviour on the linux kernel ?
I must deeper investigate, but if someone has a explanation, I'm interested.
I've used OpenBSD-4.6
Linux-2.6.31 from Archlinux and Ubuntu