捕获正在运行的进程的标准输出

问题描述 投票:0回答:2

我目前正在为我的项目测试一些程序,我目前正在将该程序作为守护程序运行,我只是想捕获该程序的标准输出也许是stderr ...

我知道strace作为调试工具是最好的,但是我想它并不能简化我的需求..

我看到关于stackoverflow的答案,例如subprocess.popen(['ps'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)...但是这启动了过程..我只想挂接到运行中的过程并获取输出...

任何答案或想法都会感激..如果是python,bash或c

python process stdout stderr
2个回答
0
投票
您可以在bash中使用重定向,就像<< >>一样,将程序的输出发送到日志文件中。可以说您运行

回声时间

您可以做

回声时间<< log.txt

还有错误输出以及什么。如果您不想看联机帮助页,请尝试此。

https://www.gnu.org/software/bash/manual/html_node/Redirections.html


0
投票
为了能够与已经运行的进程进行通信,必须在启动这些进程之前对其设置观察者/监听者。

您会看到最常用的工具,它们是TmuxScreen

然后,我认为您将能够根据将使用的工具提供的API对这些进程的输出执行任何所需的操作。

这是我看到问题时的第一个想法。

© www.soinside.com 2019 - 2024. All rights reserved.