The Interix header files are structured to align with the Single UNIX Specification. For example, string and memory functions that occur in POSIX.1 are in <string.h>, while those that are in the Single UNIX Specification, but not in POSIX.1 are in <strings.h>.
The include files are also structured to restrict the application programming interface (API) name space. If you define the macro _POSIX_SOURCE to be 1 before the first header file is included, your program is restricted to the POSIX name space. It will contain only those APIs specified in the POSIX standards. This can be restrictive.
You can get all of the APIs provided with the Interix Software Development Kit (SDK) by defining _ALL_SOURCE as 1 before the first header file is included. For example:
#define _ALL_SOURCE 1
#include <unistd.h>
The default is the more restrictive _POSIX_SOURCE.