【问题标题】:Capture the standard output of a running process捕获正在运行的进程的标准输出
【发布时间】:2020-09-29 06:28:41
【问题描述】:

我目前正在为我的项目测试一些程序,我有这个程序当前作为守护进程运行我想捕获这个程序的标准输出 也许是标准错误......

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

我在 stackoverflow 上看到了答案,例如 subprocess.popen(['ps'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) ...但这会启动该过程..我只想挂钩到正在运行的进程并获取输出...

任何答案或想法将不胜感激.. 如果在 python、bash 或 c 中

【问题讨论】:

  • 为了能够与已经运行的进程进行通信,您必须为它们设置一个观察者。最常用的工具是TmuxScreen

标签: python process stdout stderr


【解决方案1】:

为了能够与已经运行的进程进行通信,您必须在启动它们之前在这些进程上设置观察者/侦听器。

您可以看到最常用的工具是TmuxScreen

然后我认为您将能够根据您将使用的工具提供的 API 对这些流程的输出做任何您想做的事情。

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

【讨论】:

    【解决方案2】:

    您可以在 bash 中使用重定向,例如 > 将程序的输出发送到日志文件中。假设你跑了

    回声时间

    你可以的

    回声时间

    还有错误输出什么的。如果你不想看手册页,试试这个。

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

    【讨论】:

    • 我确实从链接中得到了一些帮助,但是文件描述符 /dev/stdout 是否保存输出不像 /dev/null ...
    猜你喜欢
    • 2011-12-31
    • 2018-12-10
    • 2011-03-26
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2020-10-18
    相关资源
    最近更新 更多