什麼是Windows中的PID分配策略?重複運行調用_getpid()的進程表示非順序分配(3548,3344,3628,2748,4872,2360)。Windows中的PID分配策略/使用PID來命名臨時文件
鑑於所觀察到的PID的非順序分配,是否有可能使兩個具有相同pid的不同進程在時間上彼此緊密地執行?顯然這些過程不會同時運行。
在命名臨時文件中使用PID特別不明智嗎?
我正在寫通過生成所需的輸入文件,調用可執行文件,並從閱讀中產生的輸出文件與其他可執行交互的程序說可執行文件。 CLEAN終止後,中間文件被刪除。
我擔心的是,如果臨時文件沒有被清理,並且PID被重複使用,那麼舊的臨時文件還沒有被清理,並且新文件之間可能存在歧義。如果可執行文件由於錯誤而未生成新的輸出文件,則舊文件可能會顯示爲新創建的文件,因此可能無法捕獲錯誤。
還有其他一些方法可以增強健壯性,例如對臨時文件使用GUID,僅對臨時文件使用乾淨的目錄,或者驗證是否沒有與目標輸出文件共享相同名稱的文件。應該採用這些技術中的一些技術,因爲在機器重啓時或者如果機器保持足夠的時間運行,肯定會重複PID。
這個問題主要來自我對Windows爲什麼以不同方式分配PID的好奇心,即* nix。