如果你熟悉Linux的话,就有一个常识,Linux中所有的内存信息(进程)都是以文件形式保存在/proc目录下的,我们获取通过该目录下进程ID为名称的目录中有关该进程实时内存信息,包括网络,文件句柄、启动点、执行命令等等。本文虫虫以进程堆栈为例子,介绍通过/proc/进程号/stack文件的内容来实时跟踪进程堆栈信息。
进程阻塞
为了解决这个问题,让我们考虑一个进程阻塞的过程,以TCP服务器为例。
在最简单的形式中,我们可以拥有一个单线程TCP服务器,它只接收给定线程中的流量,然后处理其结果。
如上图所示,该流程有两个服务器阻塞点:accept阶段和read阶段,第一个阻塞直到客户端完成TCP握手;第二,完成TCP握手,直到数据开始读取。下面我们利用C 套接字实现一个简单认证握手的过程,来模拟accept阶段的第一个阻塞过程。