2011-09-19 46 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