the system call is the fundamental interface between an application and the linux kernel. 系统调用是应用和内核之间的根本接口。
如果需要每个系统调用消耗的时间,可以增加-t选项
举个例子。下图就是通过时间戳,把包重传和线程的行为联系了起来。通过这一步,还可以把线程行为向业务逻辑映射,从业务层面上解释线程行为。
但是,从捕捉到的系统调用分析进程执行路径,不掌握一部分常见的系统调用,肯定是不行的。那么,又那些系统调用我们需要掌握呢?
除此之外,还需要掌握30个左右的常见系统调用。我们以提问的方式,把这些系统调用列出来,供大家参考
现在的工具,甚至是echo,因为跨平台、维持历史兼容性、各种选项支持等原因已经足够复杂。这里我们提供一个demo供大家实战。
这是个demo shell,大家可以按照需要编译之,而后使用strace追踪之。
比如,为了尽可能的能和源码对照,我们可以这么实验
实际运行的结果如下
我们也给出log.20541和log.20542的内容,供不能编译实验的同学使用
看看子进程(运行了ls命令)的strace日志
训练并且享受你的刀锋战队吧。
<a href="https://book.douban.com/subject/1768601/">the design of the unix operating system</a>
<a href="https://www.gitbook.com/book/haoozi/modern-operating-system/details">modern operating system 4th 中文版</a>
<a href="http://www.makelinux.net/kernel_map">linux内核交互图</a>