在C++中,我有一個綁定到pid的資源。有時與該pid關聯的進程會異常退出並泄漏該資源。什麼是簡單的方法來測試某個給定ID的進程是否目前在Linux上運行?
因此,我正在考慮將pid放在記錄資源被使用的文件中。然後,當我去獲取資源時,如果我看到一個已註冊爲正在使用的項目,我將搜索以查看是否正在運行與pid匹配的進程,如果沒有,則清理泄漏的資源。
我意識到有一個非常小的可能性,一個新的未分析的pid現在共享相同的數字,但這比漏掉我現在沒有清理更好。
另外,也許有一個更好的解決方案,如果是這樣,請建議,否則,我會追蹤錄像。
更多詳細信息:資源是用於通過tcp在客戶端和服務器之間進行通信的端口號。客戶端只有一個實例可以在機器上使用給定的端口號。端口號取自一系列可用端口號。在客戶端運行時,它會記錄它在磁盤上的特殊文件中使用的端口號,然後在退出時清除該條目。對於異常退出,這並不總是得到清理,端口號被註釋爲正在使用,當它不再被使用時。
你想要什麼系統?在Windows下,它不同於Linux。 – 2010-07-05 18:07:33
如果您正在運行linux,您可能需要查看實用程序pidof。如果你找到你自己的pid,你正在運行。 – 2010-07-05 18:10:07
假設pid不會重複它自己的罰款。除非你有成千上萬的短命進程 – 2010-07-05 18:43:21