Tracing system calls
shell | n0str0m0 | (0)
$ strace ls
Traces all the system calls invoked by the process "ls"
Let's say we are in directory dir and we execute ls
$ ls
file1 file2
And now, let's see what the command actually does:
$ strace ls
open(".", O_RDONLY|O_NONBLOCK|O_DIRECTORY|0x80000) = 3
getdents(3, /* 4 entries */, 4096) = 112
write(1, "file1 file2\n", 13file1 file2
) = 13
It opens the current directory, reads the number of entries (4, this is: our two files, plus "." plus "..") and writes the result using write
You should keep in mind that strace traces system ...