什么是POSIX功能根据微软

时间:2016-11-29 15:18:19

标签: c msdn

我正在读dos(1992)的旧C代码,在该代码中,我找到了对filelength的调用。

我去MSDN了解这个功能:

  

从Visual C ++ 2005开始,不推荐使用此POSIX函数。请改用符合ISO C ++的_filelength

我试着在POSIX文档中找到关于这个函数的更多信息,但除了MSDN参考文献之外我什么都没找到。

所以:

  • 在这种情况下,“POSIX”是什么意思?
  • 此功能是否存在于Microsoft库之外?

1 个答案:

答案 0 :(得分:2)

在这种情况下,POSIX是"便携式操作系统接口"这是一系列标准,最初试图使所有不同的UNIX系统兼容。因此,您可以针对POSIX API进行编写,并且如果您没有使用非POSIX API,您可能会拥有一个可以在各种UNIX变体上运行的程序,以及后来支持其他POSIX操作系统的程序。 / p>

据我所知,filelength是一个特定于平台的C调用。它可能是特定编译器支持的流行调用,但可能是特定平台或平台集支持的流行调用。

处理文件的POSIX规范是" POSIX.1:核心服务"它似乎从未包含filelength函数。可能是微软试图将它添加到POSIX并失败,或者可能是微软错误地记录了它是POSIX并修复了他们的文档与上面提到的删除。它也可能是一个古老的包含POSIX.1,后来被删除(这是最不可能的选项)。

当前版本的POSIX.1是第7版。它于2008年发布,也被称为" IEEE Std 1003.1"因为两个标准委员会决定调整标准,以减少野外标准。 You may browse the api bits of POSIX.1 here.

要使用符合POSIX标准的A​​PI查找文件大小,请使用stat(char* filename, (struct stat*) s),调用然后阅读st.st_size字段,或者您可以使用老式的方式打开它,寻求结束(fseek),然后使文件指针偏移ftell