sam*_*rai 6 python fork subprocess stdout stderr
我有一个C程序调用 fork()
我有一个python脚本,用于执行C程序
child = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE,stdout=subprocess.PIPE, bufsize=0)
Run Code Online (Sandbox Code Playgroud)
现在,我可以读取标准输出和标准错误用child.stderr.read(1)或child.communicate()...但我的问题是,现在,我怎样才能得到只有从输出分叉过程.这甚至可能吗?我可以从原来的C程序和分支中获取pid 吗?
亲切的问候,非常感谢你:)
法比安
你所要求的将会很复杂,并且在纯Python中是不可能的——你需要一些特定于操作系统的机制。
你实际上要求两件事:
如果您在 Linux 上,您可能可以通过解析 /proc 来完成前者,后者实际上是一个类似调试器的功能(例如,进程如何拦截 Linux 上另一个进程的 stdout 和 stderr?)
更有可能的是,您希望更改 C 程序的工作方式 - 例如,从 python 脚本而不是中间 C 代码执行 fork()/守护进程可以让您直接获取子进程。