【问题标题】:process started by python's subprocess doesn't existpython的子进程启动的进程不存在
【发布时间】:2011-09-19 07:49:00
【问题描述】:

我在 win7 中使用 python 的子进程运行了一个“mstsc”程序:

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

但是,当我检查 Windows 的进程监视器时,“8884”进程不存在,而另一个“mstsc”确实存在。所以我想知道“mstsc”在调用子进程时是否会创建另一个子进程。请帮忙?

【问题讨论】:

    标签: python windows subprocess


    【解决方案1】:

    好吧,我仍然是 python 的新手,但你仍然可以通过这个。

    Popen 类使用 Windows 中的 CreateProcess 函数来执行子程序。 CreateProcess 函数 创建一个新进程及其主线程。这个新进程在调用进程的安全上下文中运行。

    它在内部使用 CreateProcessAsUser 或 CreateProcessWithLogonW 函数在用户的安全上下文中运行新进程。

    根据我的理解,这会给实际执行的 suprocess.Popen() 提供不同的 pid。

    【讨论】:

    • 我已经通过使用 'subprocess.Popen('notepad')' 启动一个 'notepad' 进行了测试,它返回与进程监视器中显示的相同的 pid。
    • 我已经修好了。这个问题的原因是python的版本是32位,而我的主机是64位。我升级python后,两个pid是一样的。
    猜你喜欢
    • 2017-03-07
    • 1970-01-01
    • 2012-01-16
    • 2013-12-18
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    相关资源
    最近更新 更多