运行流程,别等

发布于 2021-01-29 16:39:19

我想运行一个进程,而不是等待它返回。我试过使用P_NOWAIT和这样的子进程生成:

app = "C:\Windows\Notepad.exe"
file = "C:\Path\To\File.txt"

pid = subprocess.Popen([app, file], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE).pid

但是,控制台窗口将保持不变,直到我关闭记事本。是否可以启动该过程而不等待它完成?

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    此调用不等待子进程终止(在Linux上)。不要问我怎么close_fds做。我几年前写了代码。(顺便说一句:subprocess.Popen恕我直言,其文档令人困惑。)

    proc = Popen([cmd_str], shell=True,
                 stdin=None, stdout=None, stderr=None, close_fds=True)
    

    编辑:

    我查看了子流程的文档,相信对您来说重要的方面是stdin=None, stdout=None, stderr=None,。否则, Popen会
    捕获程序的输出,并且您应该查看它。close_fds使子进程无法访问父进程的文件句柄。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看