write function requires unistd.h on Unix, what about windows?

stockoverflow picture stockoverflow · Apr 16, 2011 · Viewed 8.5k times · Source

I've changed from a linux computer to a windows and I'm having trouble compiling my code because these two OS don't share the same header files.

Since the unistd.h is not obviously included, Visual C doesn't know what read(), write(), close(), socklen_t() and bzero()functions are. Can anyone help me with this?

I've googled this: Is there a replacement for unistd.h for Windows (Visual C)?

I have no idea how unistd.h works, nor do I know how to code my own. Can someone please link me to one?

Answer

Jerry Coffin picture Jerry Coffin · Apr 16, 2011

read, write and close are in <io.h>, just like they traditionally were on Unix.

Offhand, I don't know of a bzero being included on Windows at all -- if you care at all about portability, you normally want to use memset instead.

socklen_t isn't normally used on Windows -- most things that would be socklen_t on Unix use either size_t or int on Windows (socklen_t on Unix is currently another reference to the same underlying type as size_t, added in case it might be useful someday -- aka, a solution in search of a problem).