Windows (Visual C) 是否有“unistd.h”的替代品?
将 Unix 控制台程序移植到 Windows 时 ( Visual C 8.0),由于缺少“unistd.h”标头中存在的函数原型,可能会遇到错误。此标头在 Windows 中不可用,包含“srandom”、“random”和“getopt”等基本函数。
移植问题
其中一个问题是查找端口支持常用 Windows 函数的“unistd.h”,不包括管道或分叉等复杂操作。虽然创建包含特定替换的自定义“unistd.h”是可行的,但问题仍然是是否存在全面的移植。
部分替换
虽然完整的移植可能不可用,以下代码提供了专注于必要功能的部分替换的起点:
#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
此部分port 包含常用函数的定义,例如“access”、“dup2”、“execve”、“ftruncate”、“unlink”、“fileno”等。
未解析的函数
某些函数,如“读”、“写”和“关闭”,具有特定于文件句柄的版本在Windows中。检查您的应用程序并考虑使用适当的 Windows 替代方案(例如“closesocket()”)非常重要。
其他定义
常见数据类型的其他定义Unix 标头,例如“ssize_t”、“int8_t”和“uint64_t”也是
此部分替换为将 Unix 程序移植到 Windows 提供了基础,同时专注于最常用的功能。开发者可以根据需要添加额外的定义来满足他们的特定要求。
以上是Visual C 的'unistd.h”在 Windows 中的等效项是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!