2011-03-24 53 views
10

來自NSRunningApplication.hprocessIdentifier的註釋:NSRunningApplication.h:「並非所有應用程序都有pid」

並非所有應用程序都有pid。

嗯?

我可以在NSRunningApplication表示已終止進程(runningProcess.terminated == YES)的特定情況下看到這種情況,但我想不出正在運行的應用程序沒有進程ID的示例。這有點像Unix 101.

文檔錯誤或我錯過了什麼?

+1

此外,從文檔:「不要依靠這個比較過程,而是比較NSRunningApplication實例使用'isEqual:'。」 – 2011-03-24 05:22:41

回答

8

這是一個對衝。 「正在運行的應用程序」是用戶認爲的應用程序。在cmd-tab切換器中顯示,等等。這不一定直接對應於一個進程。在傳統環境中,多個應用程序由一個unix進程託管,即經典。在這種情況下,NSRunningApplication將爲每個「應用程序」返回-1。

曾經參與過足夠多的人看到了足夠多有趣的黑客,他們認爲這是一個重要的事情來定義。

+0

我從來沒有聽說過用於這樣的東西「對衝」認爲我可以從上下文中挖掘意義)。你能解釋一下嗎? – 2011-03-24 08:21:59

+1

我認爲它來自成語「對衝你的賭注」。這僅僅意味着他們試圖掩蓋他們所有的基礎(這又是一個成語 - 英語!)。 – 2011-03-24 16:53:09

+0

正在運行的應用程序列表並不都是GUI應用程序。一些匿名應用程序(LSUIElement = 1)也顯示出來:AppleSpell服務,loginwindow和用戶運行的守護進程等。 – 2011-05-16 05:40:13

相關問題