Sté*_*las 118 slash filenames history portability
在整个 POSIX 规范中,都有规定 ( 1 , 2 , 3 ...) 允许实现/特别处理以 2 开头的路径。
POSIX 应用程序(根据 POSIX 规范编写的应用程序可移植到所有 POSIX 兼容系统)不能假设//foo/bar与 相同/foo/bar(尽管他们可以假设///foo/bar与 相同/foo/bar)。
现在那些//foo特殊对待的 POSIX 系统(历史悠久且仍在维护)是什么?我相信(我现在被证明是错误的)微软为他们的 Unix 变体 (XENIX) 和可能的 Windows POSIX 层推送了 POSIX 条款(有人能证实吗?)。
它被 Cygwin 使用,Cygwin 也是 Microsoft Windows 的类似 POSIX 的层。是否有任何非 Microsoft Windows 系统?开放虚拟机?
在//foo/bar特殊的系统上,它用于什么?//host/path用于网络文件系统访问?虚拟文件系统?
某些运行在类 Unix 系统上的应用程序(如果不是系统的 API)是否会//foo/bar特别处理路径(在它们否则将其/foo/bar视为文件系统上的路径的上下文中)?
编辑,此后我在奥斯汀组邮件列表上询问了//foo/bar有关规范中处理起源的问题,并且讨论很有趣(至少从考古学的角度来看)。
Sté*_*las 96
这是迄今为止给出的答案的汇编和索引。这篇文章是社区维基,任何拥有 100+ 声望的人都可以编辑它,并且没有人从中获得声望。随意发布您自己的答案并在此处添加指向它的链接(或等待我做)。理想情况下,这个答案应该只是一个摘要(有简短的条目,而其他个别的答案会有详细信息)。
//host/file网络文件共享路径。//pathname请求解析为 MVS 数据集,而不是网络文件。例子。@BinaryZebra Apollo 域/操作系统(已确认)。在官方描述 UNC(通用命名约定)中也提到了可能的//host/path符号起源(另请参见,第 2-15 页)。
根据Donn Terry 的说法,是 HP(收购了 Apollo Computers)推动将该条款纳入域/OS的 POSIX 规范。
@gilles QNX 4与 FLEET 分布式处理系统,其中是节点 123 上的一个。(在 QNX 6 文档中提到。)//123/path/path
@roaima AT&T SysV 第 3 版(未经验证)。//host/path在(在 SVR4 中停止使用) RFS 远程文件共享系统中。
@Scott SEL/Gould UTX-32(未经证实)。用于//host/path.
//foo/bar专门处理路径的应用程序//depot/A/B/C/D指的是depot 中的路径。//前缀(到与数据块关联的混合)。//前缀的巴泽尔构建图谱内的目标标签。Pre*_*rem 16
一些运行在类 Unix 上的应用程序——如果不是系统的 API——是否特别对待 //foo/bar 路径?
我知道 Perforce 使用//depot/A/B/C/DPaths 来引用 Depot。Perforce 还支持//Client/C/D路径,当客户端指向//depot/A/B/. 在这里,本地文件系统可能没有这些路径。
p4 filelog //depot/A/B/C/D即使没有文件,也会显示该文件的历史记录/depot/A/B/C/D。
p4 filelog C/D 如果从适当的目录执行,还将显示该文件的历史记录。
参考:https : //www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html
小智 7
跟随这个答案的线索。并阅读Bitsavers 手册中的第 2-15 页(感谢@grawity)。
共享数据
Domain/OS 分布式文件系统的第二个设计原则,默认共享,意味着全局统一命名空间。分布式文件系统的命名空间在用户看来就像一个巨大的分时文件系统。它是传统的 UNIX 分层名称空间,只是绝对路径名可以以网络根的名称(称为 //)开头。也可以表示相对于本地节点的根(/ 目录)的路径名。
还有一本旧手册,上面写着“首次印刷:1985 年 7 月”。在第 1-4 页上:
图1-2中的双斜线(//)代表命名树的顶层,即网络根目录。
因此,我们确认 Apollo 的 Domain/OS//用于网络根。
该ReactOS的项目-这是一个免费和开源实现的NT内核和相关的API -显然已经承诺也实现了自己的Interix样POSIX子系统(虽然MS原来的OS / 2子系统也是在上下文中提到,没有提及由 ReactOS 模拟制成)。
尽管迄今为止的努力很小,但fork()显然已成为现实。以下是子系统项目页面的摘录,列在open issues 下:
路径
在 POSIX 应用程序中使用 Win32 路径的最佳方法是什么?想法:
翻译
//<device>/<path> into\\.\<device>\<path>(驱动器号的特殊情况 -//<letter>/<path>=><letter>:\<path>- 和特殊的转义//./<raw text>=>\\.\<raw text>。UNC 路径可以用 指定//unc/<path>)。//路径由标准保留用于特定于实现的行为,并且//<letter>/在现有的 POSIX 兼容性环境中广泛使用转义 Win32 路径的语法识别“裸” Win32 路径的启发式方法
Win32 路径和
//路径的不区分大小写查找(标准是否允许//路径的这种特定于实现的行为?)。
我不确定它是如何限定的,因为我不确定它已经实现了多少,但我认为这是对问题的一个有用的有趣描述。
| 归档时间: |
|
| 查看次数: |
10786 次 |
| 最近记录: |