Linux 編程思想:序號不立即複用
表現和發現
博主一直在學習 Linux 編程,今天發現一個 Linux 世界中一個很有用的思想——關於序號。
具體現象爲,一個用過的序號(如 pid 和 GDB 中的監視點/斷點編號等等)不會立刻被重複使用,而是在當序號用盡時(如 pid 上限爲 0x7fff
),纔會從前面沒有正在被使用的序號開始重複使用空閒的序號。
原因分析
這樣做有利於用戶或開發人員分辨出每個序號所代表的項目,試想下列情況:
目前一個正在運行的程序 A,其進程 pid 爲 10000,該進程因故突然退出;
退出後又再次運行了 A 程序。
這種情況下,如果立刻複用退出的 A 程序的進程號 10000
,那麼新打開的進程 pid 仍爲 10000
,用戶/開發人員就無法確定該進程是之前的進程,還是原進程退出後,重新打開的進程,給用戶/開發人員將帶來困擾。
擴展
該思想在很多地方均適用,如在計算機網絡中,發送幀的編號也是始終遞增的,當幀編號用盡時,纔會從頭開始使用編號。