在整个 POSIX 规范中,有这样的规定 (1,2,3...) 允许实现特殊地处理以 2 开头的路径/
。
POSIX 应用程序(按照 POSIX 规范编写的可移植到所有 POSIX 兼容系统的应用程序)不能假设 与//foo/bar
相同/foo/bar
(尽管它们可以假设 与///foo/bar
相同/foo/bar
)。
现在,那些专门处理的 POSIX 系统(历史上的且仍在维护的)是什么//foo
?我相信(我现在被证明是错误的)POSIX 规定是由 Microsoft 为其 Unix 变体(XENIX)以及可能的 Windows POSIX 层推动的(任何人都可以证实这一点吗?)。
它由 Cygwin 使用,Cygwin 也是 Microsoft Windows 的类似 POSIX 的层。是否有非 Microsoft Windows 系统?开放虚拟管理系统?
系统中哪些地方//foo/bar
比较特殊,它的用途是什么?//host/path
用于网络文件系统访问?虚拟文件系统?
做一些应用在类 Unix 上运行(如果不是系统的 API)会//foo/bar
特殊对待路径(在它们否则视为/foo/bar
文件系统上的路径的上下文中)?
编辑,我从那时起在奥斯汀集团邮件列表上提出了一个问题关于规范中处理的起源//foo/bar
,并且讨论是一个有趣的阅读(至少从考古学的角度来看)。
答案1
这是迄今为止给出的答案的汇编和索引。这篇文章是社区维基,任何拥有 100+ 声望的人都可以编辑它,并且没有人从中获得声望。请随意发布您自己的答案并在此处添加指向它的链接(或等我这样做)。理想情况下,这个答案应该只是一个摘要(包含简短的条目,而其他个别答案则包含详细信息)。
目前积极维护的系统:
- 西格文。 Microsoft Windows 的 POSIX 层。用于 Windows UNC 路径。
- 优温从 1.3 开始。 Windows 的另一个 POSIX 层。至少用于
//host/file
网络文件共享路径。 - @奥利维尔杜拉克 IBM z/OS作为POSIX bug 跟踪器中提到,z/OS 解析
//pathname
对 MVS 数据集的请求,而不是网络文件。例子。
已失效的系统
@BinaryZebra Apollo 域/操作系统(确认的)。也提到过官方说明 UNC(通用命名约定)作为可能的
//host/path
符号的起源(也可以看看,第 2-15 页)。根据唐·特里,是惠普(收购了阿波罗计算机公司)推动将该条款纳入 POSIX 规范对于域/操作系统。
@吉尔斯 QNX4对于 FLEET 分布式处理系统,其中
//123/path
/path
。(提到在 QNX 6 文档中.)@roaima AT&T SysV 版本 3(未经验证)。
//host/path
在(SVR4 中停产)RFS远程文件共享系统。@斯科特 SEL/古尔德 UTX-32(未经验证)。用于
//host/path
。
//foo/bar
专门处理路径的应用程序
- @普雷姆 佩福斯其中
//depot/A/B/C/D
指的是 a 中的路径仓库。 - @WChargin 搅拌机。在其配置中您使用
//
前缀相对路径(与数据块关联的混合)。 - 这巴泽尔构建系统使用
//
前缀Bazel 构建图中的目标标签。
答案2
某些在类 Unix 上运行的应用程序(如果不是系统的 API)是否会特殊对待 //foo/bar 路径?
我知道 Perforce 使用//depot/A/B/C/D
路径来引用 Depot。//Client/C/D
当客户端指向//depot/A/B/
.Perforce时, Perforce 还支持路径。这里,本地文件系统可能没有这些路径。
p4 filelog //depot/A/B/C/D
即使没有 file ,也会显示该文件的历史记录/depot/A/B/C/D
。
p4 filelog C/D
如果从适当的目录执行,还将显示该文件的历史记录。
参考 :https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html
答案3
答案4
这ReactOS项目 - NT 内核和相关 API 的免费开源实现 - 显然也承诺实现自己的英特克斯类似 POSIX 子系统(尽管 MS 最初的 OS/2 子系统也是上下文中提到的,没有提及 ReactOS 类似物)。
尽管迄今为止的努力小的,fork()
显然是现实。这是子系统项目页面的摘录,如下所列开放式问题:
路径
在 POSIX 应用程序中使用 Win32 路径的最佳方法是什么?想法:
翻译
//<device>/<path
> 成\\.\<device>\<path>
(驱动器号有特殊情况 -//<letter>/<path>
=><letter>:\<path>
- 和特殊转义符//./<raw text>
=>\\.\<raw text>
。可以使用 指定 UNC 路径//unc/<path>
)。//
路径由标准保留用于特定于实现的行为,并且//<letter>/
转义 Win32 路径的语法广泛用于现有 POSIX 兼容性环境启发式识别“裸”Win32 路径
Win32 路径和
//
路径的不区分大小写的查找(标准是否允许这种特定于实现的//
路径行为?)。
我不确定这是否符合资格,因为我不确定其中有多少已经实施,但我认为这是对问题的有用有趣的描述。