2013年8月15日 星期四

Linux PID 何時會被重複使用

在 Android 中, 大部分的 app在執行時, 若是使用者按下 back 鍵 回到桌面, 該 app 的 process 會暫停執行, 但是 process 可能仍然會存在系統中. 如圖一所示是尚未執行 app 前的系統 process 狀態:
圖一 未執行app 之前系統中的 process



執行一個名稱為 CoverShow3D 的 app, 如圖二所示, 系統中出現CoverShow3D 的 process, 其 pid=379.
圖二 執行 CoverShow3D 後
若反覆將 CoverShow3D 這個 process kill 掉再重啟, 觀察每次拿到的 pid 其數值會不斷的增加,
                                 
kill   -15   pid

這讓筆者想到一個問題: pid 的數值到底會長到多大呢??
答案如下

cat /proc/sys/kernel/pid_max

如圖三所示:, 以筆者的系統為例, 這個極限值是 32768, 所以 pid 範圍落在 0 到 32767
圖三
當 pid 數值超過 32767 時, 系統會 wrapping  pid 的數值, pid 值就有可能被重複使用.




沒有留言:

張貼留言