繁体   English   中英

与ls -l相比,ls命令需要的系统调用是多少?

[英]ls command required system calls compared to ls -l?

因此,基本上我有一个分配要使用strace进行分析,ls命令提供与ls -l相同的信息需要哪些系统调用。

但是,对于ls -l命令有很多奇怪的系统调用,例如,对于每个文件,以/ etc / localtime作为参数调用stat 64吗? 示例(对于当前目录中的每个文件重复此操作):

stat64( "/etc/localtime", {st_mode=S_IFREG|0644,
st_size=1892, ...}) = 0
write(1, "-rwxrwxr-x 1 john john 10441"..., 55-rwxrwxr-x
1 john john 10441 jan 1 14:39 stattest
) = 55
stat64( "/etc/localtime", {st_mode=S_IFREG|0644,
st_size=1892, ...}) = 0
write(1, "-rw-rw-r-- 1 john john 320"..., 57-rw-rw-r--
1 john john 320 jan 1 14:39 stattest.c
) = 57

为什么每个文件都以localtime作为参数调用stat64? 似乎有点奇怪。 但是,不是所有相关文件信息都可以通过stat调用获得吗? 为什么ls -l需要使用lstat以及许多其他不同的怪异调用,套接字连接等。

有人可以帮我弄清楚基本系统调用什么才能真正获得ls -l给定的ls命令丢失的相关信息吗?

谢谢!

某些libc函数可能会调用stat64调用,以将文件时间转换为本地时区。 由于函数调用不会在后台保留时区信息(如果程序在执行过程中更改了时区,该怎么办?),因此每次调用时都会发生。

如果要找出特定的功能正在执行的操作,请使用gdb捕获syscall并查看堆栈跟踪(有关详细信息,请参见catch syscall上的GDB文档)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM