- 论坛徽章:
- 0
|
- $ mkdir dir
- $ touch dir/{a,b,c}
- $ ls -r dir
- c b a
- $ ls -R
- .:
- dir
- ./dir:
- a b c
- $
- $ strace rm -rf dir
复制代码
挑几行关键的:
- unlink("dir") = -1 EISDIR (Is a directory)
- open(".", O_RDONLY|O_LARGEFILE|O_DIRECTORY) = 3
- lstat64("dir", {st_mode=S_IFDIR|0775, st_size=100, ...}) = 0
- chdir("dir") = 0
- lstat64(".", {st_mode=S_IFDIR|0775, st_size=100, ...}) = 0
- open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4
- fstat64(4, {st_mode=S_IFDIR|0775, st_size=100, ...}) = 0
- fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
- getdents64(4, /* 5 entries */, 4096) = 120
- unlink("c") = 0
- unlink("b") = 0
- unlink("a") = 0
- getdents64(4, /* 0 entries */, 4096) = 0
- close(4) = 0
- fchdir(3) = 0
- lstat64(".", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=140, ...}) = 0
- rmdir("dir") = 0
复制代码 |
|