2014-05-25 54 views
1

在我的「什麼是過程」的研究中,每個頁面都一直說它完全像一個過程,但沒有GUI。那麼爲什麼它需要/有一個PID?最重要的是,我見過兩個具有相同PID的服務。爲什麼服務需要一個與其相關的進程?

服務和流程之間的真正關係是什麼?

+0

[本主題](http://msdn.microsoft.com/en-us/library/windows/desktop/ms685967%28v=vs.85%29.aspx)及其子代解釋得非常清楚。 – arx

回答

0

沒有兩個進程可以具有相同的PID。服務&進程之間的區別在於該服務沒有與其關聯的用戶,因此它在任何用戶登錄到系統之前啓動,其中進程通常使用用戶登錄令牌運行。

+0

對不起,我的意思是2個具有相同PID的服務。並感謝您的回答。我還沒有發現這一點。你有沒有來源? – bzupnick

+0

服務也是進程運行在會話0與GUI和沒有用戶令牌關聯。有些窗口中的服務被實現爲dll,他們需要從服務進程運行。在這種情況下,單個服務進程可能會加載多個dll服務,您將看到與dll服務關聯的主進程ID。 – dvasanth

+1

如果在啓用「SERVICE_WIN32_SHARE_PROCESS」標誌的情況下創建多個服務,則可以在單個進程中運行多個服務。該標誌不需要使用DLL。所有需要的是EXE的ServiceMain()識別同時運行的多個服務名稱的請求。這允許相關服務彼此共享內存和代碼。 –

相關問題