gpt4 book ai didi

python - 在另一个子进程仍在运行时调用子进程,可以吗?

转载 作者:行者123 更新时间:2023-11-28 22:38:43 25 4
gpt4 key购买 nike

我有运行子进程命令 dtncpd 的 python 代码,用于接收所有传入的文件。

subprocess.call(["dtncpd","/home/dtn2"], cwd="/home/dtn2/dtn-2.9.0/apps/", shell="false")

dtncpd 必须每次都在运行。但是我也想运行另一个子进程而不中断一个文件 python 中的 dtncpd 子进程。

另一个子流程如:

topik = subprocess.Popen(["ls","-l"], stdout=subprocess.PIPE, cwd="/home/dtn2/")
komp, err = topik.communicate()
kompserver = komp.split()
cek = len(kompserver)

以上两个过程互不相关,目的不同。

当前的结果是程序永远不会到达第二个子进程。它仍在等待第一个子进程。

我该如何解决?

最佳答案

subprocess.call 是一个实用函数,它运行并等待进程返回。如果你想让进程在后台运行而不需要 Python 等待它完成,你需要使用原始的 Popen 构造函数:

subprocess.Popen(["dtncpd", "/home/dtn2"], cwd="/home/dtn2/dtn-2.9.0/apps/")

我删除了 shell="false" 位因为 as I noted in the comments, it does the opposite of what you intend.

请注意,您的第二个子流程几乎肯定是错误的处理方法。在 os.listdiros.stat 之间(或在 Python 3.5 上,os.scandir 单独),您可以获得与 ls -l 比使用子进程更有效。

关于python - 在另一个子进程仍在运行时调用子进程,可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com