fs.link和fs.symlink之间有什么区别?他们是独立于平台的吗

What is the difference between fs.link and fs.symlink? Are they platform independent?

本文关键字:fs 于平台 平台 独立 symlink link 之间 区别 什么 他们是      更新时间:2023-09-26

fs.link和fs.symlink之间有什么区别?

我想通过编程创建一个到物理文件的符号链接(或另一个符号链接),我在Linux上,但想知道是否有可能编写一个独立于操作系统的解决方案?限制是什么?

更新

从给出的答案和评论来看,Windows似乎支持它。

Linux系统有两种链接,硬链接和软链接。

fs.link()正在通过C系统调用link()创建硬链接。从一个终端来看,等价物是ln originalName linkName。硬链接由引用同一文件的新目录条目组成。在列表中,它看起来是一个普通的文件,就像原始文件一样。如果删除了原始文件,则内容是而不是删除的,并且硬链接仍然有效。只有删除所有硬链接后,磁盘区域才会被释放。

fs.symlink()正在创建软链接,也就是通过C系统调用symlink()的符号链接。来自终端的等价物是ln -s originalName linkName,其中-s标签表示软/符号链路。软链接创建一种特殊类型的目录条目,指向另一个文件。当列出它时,它是一个指针这一事实是显而易见的,删除原始内容就足以删除内容,并破坏链接的使用。

我不在MS Windows上编写代码,但本符号链接指南指出,有一个适用于Windows命令外壳的mklink命令可以创建硬(mklink /H)或软(mklink /D)链接。Microsoft开发人员网络(MSDN)有系统函数CreateSymbolicLink和CreateHardLink的条目,它们可以提供有关较低级别发生的事情的更多信息。

在Mac上,developer.apple.com的ln页面显示,他们在Mac OSX 10.9中拥有BSD版本的ln链接创建终端命令,同时支持硬链接和软链接。