fs.link 之间有什么区别?和 fs.symlink ?
我想以编程方式创建指向物理文件的符号链接(symbolic link)(或另一个符号链接(symbolic link)),并且我在 Linux 上,但想知道是否可以编写一个独立于操作系统的解决方案?有什么限制?
更新
从给出的答案和评论来看,Windows 似乎支持它。
最佳答案
Linux系统有两种链接,硬链接(hard link)和软链接(soft link)。
fs.link()
正在通过 C 系统调用 link()
创建硬链接(hard link) .从终端等同于 ln originalName linkName
。硬链接(hard link)由引用同一文件的新目录条目组成。在列表中它看起来是一个普通文件,就像原始文件一样。如果原始文件被删除,内容不会被删除,硬链接(hard link)仍然有效。只有删除所有硬链接(hard link)后,磁盘区域才会被释放。
fs.symlink()
正在创建软链接(soft link),也就是通过 C 系统调用 symlink()
的符号链接(symbolic link)。 .从终端等同于 ln -s originalName linkName
其中 -s
标记表示软/符号链接(symbolic link)。软链接(soft link)创建一种指向另一个文件的特殊目录条目。列出时很明显它是一个指针,删除原始内容足以删除内容,并中断使用链接。
我不在 MS Windows 上编写代码,但是 this guide on symbolic links表示有一个用于 Windows 命令外壳的 mklink
命令,可以创建硬 (mklink/H
) 或软 (mklink/D
) 关联。 Microsoft Developer's Network -- MSDN -- 有系统函数条目 CreateSymbolicLink和 CreateHardLink这可能会提供有关较低级别正在发生的事情的更多信息。
在 Mac 上,developer.apple.com's page for ln显示他们在 Mac OSX 10.9 中有 BSD 版本的 ln
链接创建终端命令,同时支持硬链接(hard link)和软链接(soft link)。
关于javascript - fs.link 和 fs.symlink 有什么区别?它们是平台独立的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695726/