关于opendir()、closedir()、readdir()未收录MSDN文档的技术咨询
关于
opendir()、closedir()和readdir()在Windows上的那些事 嘿,这个问题我之前折腾跨平台代码的时候也碰到过,给你理清楚来龙去脉:
为什么MSDN上找不到这些函数的文档?
因为它们根本不是Windows原生的Win32 API!这些是POSIX(可移植操作系统接口)标准定义的目录操作函数,天生是为类Unix系统(Linux、macOS、BSD这些)设计的。Windows自己的原生目录操作API是FindFirstFile()、FindNextFile()和FindClose()这一套,你去MSDN搜这些就能找到完整的官方文档。
那为什么Windows上能有人用这些POSIX函数呢?其实是你的开发环境在背后做了兼容:
- 比如用MinGW/GCC工具链的时候,它会提供这些函数的封装实现,把
opendir这类调用转成底层Win32 API的调用 - 如果是在WSL(Windows子系统Linux)里开发,那你其实是在跑Linux环境,自然原生支持POSIX函数
- 早年Windows NT有个POSIX子系统,不过微软早就把它废弃了,现在没人用这个了
它们属于未公开API吗?
不算。这些是完全公开的POSIX标准函数,只是Windows本身不原生提供而已。你能在Windows上用,全靠第三方开发工具链的兼容层,不是微软官方的Win32 API范畴。
能不能用?会不会突然被微软终止支持?
得看你用的环境:
- 如果是MinGW这类活跃维护的工具链,只要工具链还在更新,这些兼容实现就会一直存在,可靠性没问题,但毕竟不是微软维护的,要是Windows底层API有大变动,得等工具链跟进适配
- 要是你还在依赖旧版Windows的POSIX子系统,那赶紧换吧,那玩意儿早就被微软砍了,完全不靠谱
- 如果你的代码需要跨Windows和类Unix平台,用这些POSIX函数会很方便,能减少跨平台适配的代码量;但如果只做Windows专属应用,还是推荐用原生的
FindFirstFile()系列API——微软官方维护,兼容性拉满,文档也全,不用担心哪天突然不能用
内容的提问来源于stack exchange,提问作者Bhupesh Pant
相关产品推荐
相关产品推荐

