2011-09-19 45 views
1

我在Win7運行「MSTSC」程序:過程Python的子開始並使用Python的子進程不存在

>>> import subprocess 
>>> p=subprocess.Popen('mstsc') 
>>> p.pid 
8884 

然而,當我檢查Windows的過程箴言報的「8884」進程不存在,另一個'mstsc'確實存在。所以我想知道'mstsc'是否在調用子進程時創建另一個子進程。請幫忙?

回答

6

嗯,我仍然是一個Python新手,但你仍然可以通過這個。

Popen類在Windows中使用CreateProcess函數來執行子程序。 CreateProcess函數創建一個新進程及其主線程。這個新進程在調用進程的安全上下文中運行。

它在內部使用CreateProcessAsUser或CreateProcessWithLogonW函數在用戶的安全上下文中運行新進程。

根據我的理解,會給實際執行的suprocess.Popen()提供不同的pid。

+0

我已經通過使用'subprocess.Popen('notepad')'開始'記事本'的測試,它返回與進程監視器中顯示的相同的pid。 – yelo

+0

我已修復它。這個問題的原因是,Python的版本是32位,而我的主機是64位。在我升級了python之後,兩個pid是一樣的。 – yelo