gpt4 book ai didi

linux - 为什么 glob lstat 匹配条目?

转载 作者:IT王子 更新时间:2023-10-29 00:25:29 28 4
gpt4 key购买 nike

调查 this question 中的行为, 我很惊讶地看到 perl lstat() s 每条路径都匹配一个 glob 模式:

$ mkdir dir
$ touch dir/{foo,bar,baz}.txt
$ strace -e trace=lstat perl -E 'say $^V; <dir/b*>'
v5.10.1
lstat("dir/baz.txt", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
lstat("dir/bar.txt", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0

我在我的 Linux 系统上看到与 glob(pattern) 相同的行为和 <pattern> , 以及更高版本的 perl。

我的期望是通配符只会在幕后简单地打开 dir/readdir,并且不需要检查它正在搜索的实际路径名。

这个lstat的目的是什么? ?它会影响 glob() 的返回吗?

最佳答案

这种奇怪的行为已经noticed before on PerlMonks .结果是 glob 调用了 lstat 来支持它的 GLOB_MARK标志,其效果是:

Each pathname that is a directory that matches the pattern has a slash appended.

要查明一个目录条目是否引用了一个子目录,您需要对其进行stat。即使没有给出标志,这显然也是如此。

关于linux - 为什么 glob lstat 匹配条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16461510/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com