Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何查找目录的链接计数_C_Operating System_Posix - Fatal编程技术网

C 如何查找目录的链接计数

C 如何查找目录的链接计数,c,operating-system,posix,C,Operating System,Posix,在终端中执行这些命令时,目录d的链接计数是多少?在POSIX系统上,您可以使用stat()读取st_nlink以获得任何文件或目录的硬链接数,根据包含它的文件系统定义为“硬链接数” 但是POSIX并没有真正定义目录的“硬链接数”的含义。目录不能有硬链接,因此其理论硬链接计数始终为1 不同的文件系统使用st_nlink传递有关目录的不同信息: 在Linux(ext4)上,st_nlink表示该目录的子目录数及其特殊条目: mkdir d mkdir d/a mkdir d/b mkdir d/c

在终端中执行这些命令时,目录d的链接计数是多少?

在POSIX系统上,您可以使用
stat()
读取
st_nlink
以获得任何文件或目录的硬链接数,根据包含它的文件系统定义为“硬链接数”

但是POSIX并没有真正定义目录的“硬链接数”的含义。目录不能有硬链接,因此其理论硬链接计数始终为1

不同的文件系统使用
st_nlink
传递有关目录的不同信息:

在Linux(ext4)上,
st_nlink
表示该目录的子目录数及其特殊条目:

mkdir d
mkdir d/a
mkdir d/b
mkdir d/c
$ ls -F d/
a/  b/  c/  d  e  f
$ ls -a d/
.  ..  a  b  c  d  e  f
$ ls -a d/ | wc -l
8
$ ls -al d/ | grep ^d | wc -l
5
$ stat --printf %h d/
5
因此,如果您运行问题中的命令,您将得到5

另一方面,MacOS(apfs)将其定义为该目录中所有条目的数量,加上其特殊条目:

mkdir d
mkdir d/a
mkdir d/b
mkdir d/c
$ ls -F d/
a/  b/  c/  d  e  f
$ ls -a d/
.  ..  a  b  c  d  e  f
$ ls -a d/ | wc -l
8
$ ls -al d/ | grep ^d | wc -l
5
$ stat --printf %h d/
5

因此,如果您运行问题中的命令,您将得到8。

您是在寻找C代码来获得链接计数,还是只是一个命令?如果是后者,
ls-ld
将在输出的第二列给出链接计数。它显示为5。它是如何计算出那个值的呢?
a
b
c
@kaylum:或者更确切地说,
d
d/,
d/a/。
d/b/。
d/c/。