繁体   English   中英

如何使用带有多个创建标志的 subprocess.Popen?

[英]How to use subprocess.Popen with multiple creationflags?

提示:本站提供中英文对照查看,鼠标放在中文字句上可显示英文原文。 若本文未解决您的问题,推荐您尝试使用帮您解决。

我正在尝试在 shell 上执行节点命令,并且我需要 python 在继续执行下一行代码之前不要等到节点关闭,所以我使用创建标志: CREATE_NEW_CONSOLE ,但我也想要 python显示在屏幕上,所以我也想使用CREATE_NO_WINDOW 该名称似乎表明可以使用多个,实际上文档说:

如果给定,creationflags 可以是以下一个或多个标志: CREATE_NEW_CONSOLE

CREATE_NEW_PROCESS_GROUP

ABOVE_NORMAL_PRIORITY_CLASS

BELOW_NORMAL_PRIORITY_CLASS

HIGH_PRIORITY_CLASS

IDLE_PRIORITY_CLASS

NORMAL_PRIORITY_CLASS

REALTIME_PRIORITY_CLASS

CREATE_NO_WINDOW

DETACHED_PROCESS

CREATE_DEFAULT_ERROR_MODE

CREATE_BREAKAWAY_FROM_JOB

但我找不到一次使用多个的方法。 如果我尝试使用元组或列表,则会出现错误消息: CreateProcess() argument 6 must be int, not tuple 我也找不到任何Popen与多个创建标志一起使用的示例。

有没有办法用两个标志来调用它? 如果没有,我怎样才能达到分离进程的目的,并且屏幕上不会出现丑陋的黑色 window ?

我的代码:

def inicializar_API_biblia():
    pathApiBibliaLocal = r'C:\\Users\\adassa\Desktop\\Programacao\\api-biblia\\index.js'
    pid = subprocess.Popen(['node', pathApiBibliaLocal],
          creationflags=(subprocess.CREATE_NO_WINDOW, subprocess.CREATE_NEW_CONSOLE)).pid

我需要 python 不要等到节点关闭后再继续下一行代码

这样的修改不应该是必要的,因为subprocess.Popen不会等到子进程完成后再继续。

关于问题的其余部分,您需要使用按位或| 运算符来组合标志,如CREATE_NO_WINDOW | CREATE_NEW_CONSOLE CREATE_NO_WINDOW | CREATE_NEW_CONSOLE 请注意,该特定组合可能没有意义。 (可以指定一个或多个标志这一事实并不意味着所有组合都是有意义的。)

问题未解决?试试使用:帮您解决问题。
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM