python - 在 Windows 上使用 python 启动分离的无限进程并将输出通过管道传输到文件中
问题描述
我正在尝试使用 python 启动一个无限运行的进程并将其输出到文件中。在 python 可执行文件退出后,新创建的进程应该继续运行。当python使用以下代码退出时,我能够启动一个进程并使其保持运行:
subprocess.Popen(command_list, creationflags=subprocess.DETACHED_PROCESS | subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.CREATE_BREAKAWAY_FROM_JOB)
现在我正在尝试将已启动进程的输出通过管道传输到一个文件中,但我无法让它与分离进程一起工作。
关于如何实现这一目标的任何建议?
请注意,我正在尝试在 Windows 上实现这一点。
解决方案
您是否尝试过将stderr和stdout重定向到两个文件:
from subprocess import Popen
from subprocess import DEVNULL
from subprocess import DETACHED_PROCESS
from subprocess import CREATE_NEW_PROCESS_GROUP
from subprocess import CREATE_BREAKAWAY_FROM_JOB
command_list = ...
creationflags = DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP | CREATE_BREAKAWAY_FROM_JOB
with open("stderr.txt", mode="wb") as out, open("stdout.txt", mode="wb") as err:
Popen(command_list, creationflags=creationflags, stdin=DEVNULL, stdout=out, stderr=err)
确保检查stderr.txt
和stdout.txt
,因为您的流程的输出可能会被重定向到其中一个。
推荐阅读
- windows - 再次在 Windows 10 上安装 Composer?
- ace-editor - 在 ace 编辑器中插入伪装文本
- c# - 从 C# 中的地图中删除时间戳
- javascript - 利用 Measurement Protocol 将 Google Analytics 连接到 CRM
- c - 如何将 char[] 写入结构?
- c++ - Valgrind 显示内存泄漏?可能与fftw有关?
- azure - 如何使用 Azure Az CLI 以编程方式创建使用 Autopilot 预配的 Azure CosmosDB
- git - Git 克隆到取自 URI 的目录
- mapbox-android - Firebase 模拟器 com.facebook.soloader.SoLoader$WrongAbiError
- unity3d - 如何混合多种纹理?