Python 获取子流程中分叉流程的标准输出/标准输出
我有一个C程序,它调用Python 获取子流程中分叉流程的标准输出/标准输出,python,fork,subprocess,stdout,stderr,Python,Fork,Subprocess,Stdout,Stderr,我有一个C程序,它调用fork() 我有一个python脚本,它用 child = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE,stdout=subprocess.PIPE, bufsize=0) 现在,我可以使用child.stderr.read(1)或child.communicate()。。。但我现在的问题是,如何只从分叉过程中获得输出。这可能吗?我可以从原始的C程序和fork中得到pid吗 亲切问候,, 非常
fork()
我有一个python脚本,它用
child = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE,stdout=subprocess.PIPE, bufsize=0)
现在,我可以使用child.stderr.read(1)
或child.communicate()
。。。但我现在的问题是,如何只从分叉过程中获得输出。这可能吗?我可以从原始的C程序和fork中得到pid吗
亲切问候,,
非常感谢:)
Fabian您所要求的将是复杂的,在纯python中是不可能实现的——您将需要一些特定于操作系统的机制 你真的在要求两件事:
- 从父进程的PID中标识分叉进程
- 截取任意进程中的标准输入/输出
cpid = fork();
printf("%d|%d", (int)get_pid(), cpid);
祝你好运:)“这可能吗?”否。“我可以从原始C程序和fork中同时获得pid吗?”否。C程序拥有该子程序。您的进程拥有C程序。现在。不要再担心Linux的细节,描述一下你真正的问题。为什么Python程序不能运行与C程序相同的子进程?更简单的方法可能是使用不同的输出格式,主进程可以从“ParentOutput:”开始,而子进程的输出是:“ChildOutput:”。然后您可以忽略python程序中的“ParentOutput”。