【发布时间】:2015-02-02 20:14:23
【问题描述】:
所以基本上我有一个任务要使用 strace 进行分析,ls 命令需要哪些系统调用才能提供与 ls -l 相同的信息。
但是 ls -l 命令有很多奇怪的系统调用,例如 stat 64 被 /etc/localtime 作为每个文件的参数调用? 示例(对当前目录中的每个文件都重复此操作):
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
为什么每个文件都使用本地时间作为参数调用 stat64?似乎有点奇怪。 不应该所有相关的文件信息都可以通过 stat 调用获得吗?为什么 ls -l 需要使用 lstat 和许多其他不同的奇怪调用、套接字连接等。
有人可以帮我弄清楚基本系统调用什么来实际获取命令 ls 中缺少的相关信息,这是由 ls -l 给出的吗?
谢谢!
【问题讨论】: