Linux 编程思想:序号不立即复用
表现和发现
博主一直在学习 Linux 编程,今天发现一个 Linux 世界中一个很有用的思想——关于序号。
具体现象为,一个用过的序号(如 pid 和 GDB 中的监视点/断点编号等等)不会立刻被重复使用,而是在当序号用尽时(如 pid 上限为 0x7fff
),才会从前面没有正在被使用的序号开始重复使用空闲的序号。
原因分析
这样做有利于用户或开发人员分辨出每个序号所代表的项目,试想下列情况:
目前一个正在运行的程序 A,其进程 pid 为 10000,该进程因故突然退出;
退出后又再次运行了 A 程序。
这种情况下,如果立刻复用退出的 A 程序的进程号 10000
,那么新打开的进程 pid 仍为 10000
,用户/开发人员就无法确定该进程是之前的进程,还是原进程退出后,重新打开的进程,给用户/开发人员将带来困扰。
扩展
该思想在很多地方均适用,如在计算机网络中,发送帧的编号也是始终递增的,当帧编号用尽时,才会从头开始使用编号。