问题标签 [stat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 如何从用户 ID 中检索用户名
我在 Unix 上实现(ls)命令,同时从一本书中学习。在我使用(-l) 标志执行(ls)命令的编码部分,我看到我必须提示文件的用户名和组名。到目前为止,我有来自以下几行的用户和组 ID:
在 Unix 上的默认(ls)命令中,文件的信息以显示用户名而不是用户 ID 的方式打印。
谁能帮我找到正确的方法来从他们的 ID 中检索用户名和组名?
python - 哪些信息将路径中的文件数据标识为未更改?
我想记住在给定路径上对文件数据进行操作的函数的结果。如何确定文件数据自上次处理后是否已更改?
我正在考虑将包含st_dev
,st_ino
和st_mtime
的键映射到结果。这足够了吗?
c - C stat 结构没有 st_ctime 字段,但只有 st_ctim
我现在已经用谷歌搜索了大约两个小时,但我找不到任何有帮助的答案。
手册页中指定的“stat”的定义表明存在 st_ctime 字段。
但是,即使我使用的是 gcc(应该按照标准运行),这对我的系统来说似乎并不正确。
事实上,所有时间字段(atime、mtime、ctime)都丢失了,因此该结构包含一些 atim、mtim 和 ctim 值,它们返回 timespec 而不是所需的 time_t 值。
现在我的问题:
- 为什么会这样?也许我包含了错误的标题,但我确定它一定是 sys/stat.h。
- 我没有找到太多关于 timespec 的信息,它是什么以及为什么会返回这里?
- 即使我找到了解决方法,它对我有帮助还是任何其他系统无法执行我的代码?
我正在使用 Ubuntu 11.10 和 gcc 4.6.1。
我的代码(部分):
如果您能对此提供帮助,我会非常高兴,我真的不知道为什么我不能使用我的结构的 st_ctime 字段进行编译,并且像往常一样 gcc 在谈论错误时没有太大帮助; -)
可能它与#include 问题有关,但我无法确定是什么。
c - STAT 块大小/使用的块
我有一个令我困惑的问题,我的任务是解决碎片化问题。
我在某些地方读到 st_blksize 是文件系统的一般块大小,在这种情况下是文件系统,4096
但该文件适合3 blocks
,10520 / 512
这20.5
意味着有3.5 blocks
未使用的空间,即使它已分配。这是否意味着1792
此文件中有未使用的字节(碎片)?
正如我所提到的,我对此进行了相当多的阅读并阅读了很多相互矛盾的文字,希望有人能一劳永逸地解决这个问题!
c - MINIX内部碎片2
我正在用 C 语言编写一些软件,它递归地列出给定目录中的所有文件,现在我需要解决内部碎片问题。
我花了很长时间研究这个,发现ext2上的内部碎片只发生在最后一个块中。我知道从理论上的 inode 编号你应该能够获得第一个和最后一个块地址,但我不知道如何。
我已经研究过stat()
,fcntl()
以及各种方式。如何从 inode 号中获取最后一个块地址?
我还发现,一旦我有了最后一个块的地址,我就可以测试该块中有多少可用空间,这会给我内部碎片。
我知道有一个get_inode
和一个get_block
命令,但除此之外一无所知!
c - C stat() 忽略文件
我在 C 中的 stat 函数有问题。我的应用程序必须列出两个目录中的所有文件(第二个目录尚未实现)。当 dir1 设置为“.”时 对于当前目录,它列出了所有文件。如果我将其更改为所需的目录,它只会列出一个文件。
运行程序的结果如下:
这是 ls 在它正在读取的目录中的结果:
在此先感谢,汤姆。
c - fuse 文件系统无法更改 getattr 函数中 struct stat *stbuf 的值?
问题解决了!
感谢@basile-starynkevitch,我发现struct stat
不同文件中的大小不同!
在<sys/stat.h>
,sizeof(struct stat)
是 88 字节,但使用 fuse 的库(我猜是由于-D_FILE_OFFSET_BITS=64
标志),这是 96 字节。
因此,当我将 fuse lib 添加到远程服务器(-D_FILE_OFFSET_BITS=64 /usr/local/lib/libfuse.so /usr/local/lib/libulockmgr.so
向 gcc 添加标志)时,我的程序运行正常!
感谢您的帮助!
我正在做一些关于保险丝的项目,这让我发疯了。
我从远程服务器发送 struct stat *stbuf 的数据,服务器和客户端的数据都是正确的,但是当我使用 memcpy 将数据复制到 stbuf 时,似乎没有复制任何内容。我也尝试使用 read(socked,stbuf,sizeof(struct stat)); 直接,但这也不起作用。
这是代码......(如果没有这样的文件,远程服务器将 -ENOENT 保存在 st_ino 中)
我从 gdb 获得的数据:
read() 后,在 buf 中获取数据
将数据复制到 stbuf
stbuf 根本没有改变。
谁能给我一些关于这种现象的建议?我做了一些工作,但仍然没有找到解决方案。
c - C 编程 - Stat 系统调用 - 错误
我是 C 新手,但尝试了一些系统调用。
我正在编写迭代目录中所有文件并打印当前文件名和大小的程序。我可以让程序打印文件名,但是当我执行 stat 系统调用时它会出错。
这是一些代码:
我有这样描述的结构:
如果我改变:
至
它仍然进入循环,这让我认为它无法读取文件名,但它在错误语句中打印它没有问题。
有人可以指出我正确的方向吗?谢谢!
Аркадий
node.js - 无法理解 fs.stat() 的工作原理
我正在尝试编写一个函数,告诉我某个路径是一个目录。
但是,它从不打印答案。
如果路径名存在 - 它不会调用该函数。如果它不存在,它会生成一个异常:ENOENT not a file or directory
. 我不想知道它存在路径名,但我想知道它是否是一个目录。
任何人都可以帮我解决它吗?
linux - /proc/pid/stat 文件中的 cstime 错误
stime
或cstime
在/proc/pid/stat
文件中是如此巨大,没有任何意义。但只是某些进程cstime
有时会出现此错误。如下:
您可以看到stime
proc 4815, nscd
, is 1844674407359
, equal to 213503-23:34:33
, 但刚刚运行1-01:20:02
.
另一个问题过程有错误cstime
如下:
一个bash fork a sh,它分叉一个睡眠。
所以你可以看到 proc bash 中的 cstime 是 1844674407368,比它的孩子的总 cpu 时间大得多。
我的服务器有一个 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz,4 核 8 线程。操作系统为 Suse Linux Enterprise Server SP1 x86_64,如下
那么是内核的问题吗?有人可以帮忙解决吗?