Is there a Replacement for 'unistd.h' for Windows (Visual C)?
When porting a Unix console program to Windows (Visual C 8.0), one may encounter errors due to missing prototypes for functions present in the 'unistd.h' header. This header, unavailable in Windows, contains essential functions like 'srandom', 'random', and 'getopt'.
Porting Concerns
One concern is finding a port of 'unistd.h' that supports commonly used Windows functions, excluding complex operations like piping or forking. While it's feasible to create a custom 'unistd.h' containing specific replacements, the question remains if a comprehensive port exists.
Partial Replacement
While a complete port may not be available, the following code provides a starting point for a partial replacement focusing on necessary functions:
#include <stdlib.h> #include <io.h> #include <getopt.h> /* https://gist.github.com/ashelly/7776712 */ #include <process.h> /* getpid() and exec..() functions */ #include <direct.h> /* _getcwd() and _chdir() */ #define srandom srand #define random rand
This partial port includes definitions for commonly used functions, such as 'access', 'dup2', 'execve', 'ftruncate', 'unlink', 'fileno', and others.
Unresolved Functions
Some functions, like 'read', 'write', and 'close', have file handle-specific versions in Windows. It's important to examine your application and consider using the appropriate Windows alternatives, such as 'closesocket()'.
Additional Definitions
Additional definitions for data types commonly found in Unix headers, such as 'ssize_t', 'int8_t', and 'uint64_t', are also included.
This partial replacement provides a foundation for porting Unix programs to Windows while focusing on the most commonly used functions. Developers can add additional definitions as needed to meet their specific requirements.
The above is the detailed content of What's the Windows Equivalent of `unistd.h` for Visual C ?. For more information, please follow other related articles on the PHP Chinese website!