【发布时间】:2020-11-08 13:19:13
【问题描述】:
我目前有以下代码,我使用os.execv() 来执行某种进程。例如:
process_param = [exec_path, f]
pid = os.fork(
try:
if (pid > 0):
#parent
time_lim = 55
for _ in range(time_lim):
child_pid, status = os.waitpid(-1, os.WNOHANG)
if (child_pid != 0):
break
time.sleep(1)
elif (pid == 0):
os.execv(exec_path, process_param)
else:
status = 1
except ChildProcessError:
status = 1
在你告诉我使用 subprocess 之前,请注意(出于分配目的),我应该坚持这种通过 Python 运行 bash 命令的特殊方法。
我想做类似的事情:
var_a=`cat some_file`
有谁知道我如何捕获来自os.execv() 命令的输出(位于子进程中)并将其存储在变量中(可能将其返回给父进程)?
【问题讨论】:
-
您需要将新进程的标准输出文件句柄连接到读取它的父进程中的某个东西。正如您所注意到的,
subprocess已经为您完成了这项工作——也许可以看看它的实现作为示例。 -
有人建议我使用 os.pipe()。但是,我不确定我是否理解它的实现。
-
在类 Unix 系统上用 C 语言实现这一点应该不难找到;将构造映射到 Python
os.*调用应该很简单。
标签: python python-exec