You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于Windows系统符号链接及mklink命令的技术问询

关于Windows系统符号链接及mklink命令的技术问询

咱们先唠唠mklink的/d参数为啥存在——其实这和Windows对文件、目录的底层处理逻辑直接相关。

在Windows的NTFS文件系统里,文件和目录虽然都属于文件系统对象,但它们的角色和处理规则是完全分开的:文件是用来存储实际数据的容器,而目录是负责组织文件、记录文件位置的索引结构。mklink的/d flag就是专门用来告诉系统:“我要创建的是目录符号链接,目标是一个目录,不是普通文件”。如果不带这个参数直接运行mklink,默认会创建文件符号链接,要是你这时候把一个目录当目标,系统直接就会报错,因为它会把目标当成文件来处理,自然匹配不上。

再说说你第二个疑问:为啥不是所有符号链接工作方式都一样?虽然在类Unix系统里,目录确实是一种特殊的文件,但Windows的设计思路不一样。系统在处理符号链接的时候,会根据它的类型(文件/目录)走不同的逻辑:

  • 比如访问文件符号链接时,系统会直接指向对应的文件数据,就像你直接打开原文件一样;
  • 而访问目录符号链接时,系统会把它当成一个真实的目录来处理,比如你进入这个链接,看到的是目标目录里的所有内容,甚至一些系统工具(比如资源管理器、命令行的cd命令)都会把它当作普通目录来识别。

另外,Windows的很多API调用也是区分文件和目录的,比如创建文件的API和创建目录的API是分开的,符号链接必须明确类型,才能让系统正确调用对应的处理逻辑,避免出现混乱。

备注:内容来源于stack exchange,提问作者user325613

火山引擎 最新活动