fopen filename跨平台

时间:2014-08-13 13:30:19

标签: c++ linux windows

fopen API如何处理Windows和Linux上的filename参数?

Linux背景信息

  

fopen()函数应该打开文件,其路径名是filename指向的字符串,并将流与之关联。   http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html

这个描述并没有真正说明路径名。

  

用于标识文件的字符串。在IEEE Std 1003.1-2001的上下文中,路径名最多包含{PATH_MAX}个字节,包括终止空字节。它有一个可选的开始斜杠,后跟零或多个由斜杠分隔的文件名。   路径名可以选择性地包含一个或多个尾部斜杠。   多个连续斜杠被认为与一个斜杠相同。   http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#tag_03_266

这似乎是指“/ root / path / file”或“path / file”,我将其解释为包含已安装点的本地文件系统。

Windows的背景信息

  

fopen接受在执行时在文件系统上有效的路径;   只要执行代码的系统在执行时可以访问共享或映射驱动器,fopen就会接受涉及映射网络驱动器的UNC路径和路径。   http://msdn.microsoft.com/en-us/library/yeby3zcb.aspx

这似乎意味着本地文件系统,包括安装点和UNC路径。

Linux和Windows之间的区别似乎是Windows也允许访问UNC路径。这是正确的断言吗?

UNC是一种网络资源。 fopen的Windows实现是否对网络资源(共享)的类型设置了任何限制?它是否支持SMB,NFS,AFS,WebDAV,其他?

0 个答案:

没有答案