简单的方法来找出是否在写我的代码,我想有所有POSIX操作系统的共同实现,而不是为每个操作系统分开执行的一个POSIX API是由OS
问题描述:
实现。我使用的POSIX API之一是posix_fallocate(),在测试时我发现它不被MacOS支持。简单的方法来找出是否在写我的代码,我想有所有POSIX操作系统的共同实现,而不是为每个操作系统分开执行的一个POSIX API是由OS
如果我知道这早些时候,我就没有用过这个API或不得不为每个操作系统单独实现。
所以我的问题是 - 什么是一个简单的方法来找到在不同的操作系统特定POSIX电话支持?人们总是需要为每个目标操作系统搜索文档吗?
谢谢。
答
望着文档是一个良好的开端,但它往往不会告诉你,当一个特定的功能已经实现,这也很重要。对于难以理解的平台,可能很难判断哪些旧版本仍然相关,这使得更难确定是否可以接受对特定POSIX功能的依赖。
另一个问题是功能是否实现,但质量不合格。 posix_fallocate
在这方面是一个有趣的角落案例。 glibc的实现使用仿真如果文件系统缺乏一个实际低级别fallocate
运营支撑(如NFS直到最近):
根据您的应用做什么,这种行为可能不可接受。只检查头文件和文档可能不会揭示这一点(例如,上述文档中的零件仅在最近才添加)。
最后,没有建立并尽早对所有相关目标测试很好的替代品,但我明白,这是对非Linux的目标越来越困难。