- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有人能解释一下为什么内核不允许我们建立到目录的硬链接(hard link)吗?是因为它破坏了文件系统的有向无环图结构规则,还是因为其他原因。如果它允许,还会出现什么其他并发症?
最佳答案
在第 7 版(或第 7 版)UNIX 时代,还没有系统调用 mkdir(2)
和 rmdir(2)
。 mkdir(1)
程序是 SUID root,并使用 mknod(2)
系统调用创建目录和 link(2)
系统调用以在新目录中生成 .
和 ..
的条目。 link(2)
系统调用只允许 root 执行此操作。因此,早在那时(大约 1978 年), super 用户就可以创建指向目录的链接,但只有 super 用户才被允许这样做,以确保不存在循环或其他丢失链接的问题。例如,如果在部分创建目录时系统崩溃,则有诊断程序可以解决问题。
您可以在 Bell Labs 找到 Unix 第 7 版手册.第 2 和第 3 部分没有 mkdir(2)
和 rmdir(2)
。您使用了 mknod(2)
系统调用来创建目录:
NAME
mknod – make a directory or a special file
SYNOPSIS
mknod(name, mode, addr)
char *name;DESCRIPTION
Mknod creates a new file whose name is the null-terminated string pointed to by name. The mode of the new file (including directory and special file bits) is initialized from mode. (The protection part of the mode is modified by the process’s mode mask; see umask(2)). The first block pointer of the i-node is initialized from addr. For ordinary files and directories addr is normally zero. In the case of a special file, addr specifies which special file.
Mknod may be invoked only by the super-user.
SEE ALSO
mkdir(1), mknod(1), filsys(5)
DIAGNOSTICS
Zero is returned if the file has been made; – 1 if the file already exists or if the user is not the superuser.
link(2)
的条目指出:
DIAGNOSTICS
Zero is returned when a link is made; – 1 is returned when name1 cannot be found; when name2 already exists; when the directory of name2 cannot be written; when an attempt is made to link to a directory by a user other than the super-user; when an attempt is made to link to a file on another file system; when a file has too many links.
unlink(2)
的条目指出:
DIAGNOSTICS
Zero is normally returned; – 1 indicates that the file does not exist, that its directory cannot be written, or that the file contains pure procedure text that is currently in use. Write permission is not required on the file itself. It is also illegal to unlink a directory (except for the super-user).
ln(1)
命令的手册页指出:
It is forbidden to link to a directory or to link across file systems.
mkdir(1)
命令说明的手册页:
Standard entries, '.', for the directory itself, and '..' for its parent, are made automatically.
如果没有这些链接也可以创建目录,这就不值得评论了。
现在,mkdir(2)
和 rmdir(2)
系统调用是标准的,允许任何用户创建和删除目录,保留正确的语义。不再需要允许用户创建到目录的硬链接(hard link)。这是双重事实,因为引入了符号链接(symbolic link) - 它们不在第 7 版 UNIX 中,而是很早就出现在 UNIX 的 BSD 版本中。
对于普通目录,..
条目明确地链接回 the(单个、单独的)父目录。如果您在不同目录中的同一目录有两个硬链接(hard link)(两个名称),那么 ..
入口点在哪里?据推测,到原始父目录 - 并且可能无法从链接目录到达“其他”父目录。这种不对称会引起麻烦。通常,如果您这样做:
chdir("./subdir");
chdir("..");
(其中 ./subdir
不是符号链接(symbolic link)),然后您将回到开始的目录。如果 ./subdir
是指向其他地方目录的硬链接(hard link),那么在第二个 chdir()
之后,您将位于与开始位置不同的目录中。您必须在所示的 chdir()
操作之前和之后通过一对 stat()
调用来证明这一点。
关于linux - 关于硬链接(hard link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5829001/
我通常从以下位置获取代码:https://www.w3schools.com .这个代码还有一个 Accordion ; 但是,当我使用链接 -> 到 Accordion 时, Accordion 不
我见过的所有 JNI 指南(例如 JNI runtime linking )都建议我将 JNI 库链接到 libjvm.so: $ gcc -I${JAVA_HOME}/include -c -o t
实现以下目标的正确 URL 格式是什么: 使用 Universal Link 在 iOS 上的另一个应用程序中打开 Google map 应用程序。 根据两个坐标设置目的地:纬度和经度,并让用户选择交
我已经查看了 Microsoft 的 MSDN 和整个网络,但我仍然无法很好地了解它是什么。 这是否意味着已完成的程序在执行期间的不同时间加载 DLL,而不是在启动时一次性加载所有 DLL? 我完全偏
我有一个看起来像这样的 css: .browse-link A:link { color: #F6CA4C; text-decoration: none; } .browse-link
当我点击“产品”链接时,它突然指向#link。我怎样才能使它的外观看起来像滚动然后转到产品?请帮帮我。 vStudy function big(x){
我想在保存之前更改从输入字段中获取的值。 params[:link]['url'] = "www.facebook.com/redbull" 现在我只想将“redbull”放入数据库。以下代码失败,因
我正在使用链表编写程序(真是一场噩梦)。 无论如何,该程序的目的是输入 8 个字符,然后让程序将字符打印回给您,并以相反的顺序打印回字符,当然是使用链表。 到目前为止我已经明白了。它有很多错误(我认为
基本上,我删除了 anchor 按钮,因此链接窗口中不应该有指向 anchor 选项的链接。 有什么方法可以删除该下拉选项 ? 最佳答案 想通了 if ( dialogName == 'link' )
我的本地(和远程)SQL SERVER 2005 管理员都声称“允许链接服务器是一个安全问题”并禁止在此处使用它们。 (哈?) 无论如何,有没有办法在没有链接服务器的情况下做类似的事情? SELE
如果我有: linkedlist1= 1,2,3,4; 和 linkedlist2= 5,6,7; 如果我调用: linkedlist2.set(0,9999) 它会更改为 linkedlist2 =
首先,如果这个问题看起来很愚蠢,我很抱歉,但我仍在学习 React 和 html。所以问题是我的 react 代码中有一个按钮标签,它为我提供了一些关于进入我提供的特定链接的逻辑。我的 Button.
我将制作一个文本 block ,这样如果您单击一个单词,它就会被词汇替代品所替换。 例如“fearful-of-cats”是“ailurophobic”的词汇替代品,因为如果您在任何文本中将后者替换为
我有以下代码 Can you click me? 目标是我可以点击“你能点击我吗”框并转到 google 并在包含 div 的任何其他地方
这是一个案例: 默认情况下,如果我点击#2、#3、#4、#5,我将被重定向到#1。 如果我想在没有 #1 激活的情况下点击输入,我该如何修复 CSS? 提前
有没有什么快速的方法可以使 :visited 链接的颜色与链接本身的颜色相同? 例如: * {color:black} a:link {color:blue} a:visited {color:inh
我读到从 iOS 9 开始,引入了通用链接。请解释深层链接和通用链接之间的区别。我的目标是,一个链接将通过邮件发送给客户。让邮件说有一个项目 A 的报价和一个链接。单击链接时 如果安装了该应用程序,则
因此我们需要对 CSS anchor 伪类使用以下顺序 a:link { color: red } a:visited { color: blue } a:hover { color
我组件的当前路径是http://localhost:3000/dashboard/questionnaire/5bf79ff4c45a150015cef7a9在这个组件里面有 Financials 如
我 rsync 目录“Promotion”包含两台具有不同目录结构的机器之间的绝对符号链接(symbolic link)。因此绝对符号链接(symbolic link)在两台机器上都不起作用。为了使它
我是一名优秀的程序员,十分优秀!