【问题标题】:Read console for a process you didn't start读取控制台以获取您未启动的进程
【发布时间】:2013-06-28 23:49:23
【问题描述】:

我正在使用第 3 方工具 A 启动一个长时间运行(数周)的控制台应用程序 B 并捕获控制台输出然后显示它。不幸的是,主应用程序有崩溃的趋势,这意味着它不再可能监视B

如果B 已经运行了一段时间,我不想重新启动它,但我需要知道它的进展情况。

理想情况下,我想编写一个非常简单的应用程序,显示B 的控制台输出(最好是.Net,但在Windows 上运行的任何东西都可以)。

这对于您尚未启动的进程是否可行?如果有,怎么做?

【问题讨论】:

  • 我们能否假设 B 正在写入 stdout/stderr 而不是使用直接控制台 I/O?是否可以让 A 启动您选择的包装器 .exe,然后调用 B?这将是我能看到的唯一适合“非常简单”类别的策略。
  • 有趣的问题。我希望如此。该应用程序是针对 Windows 和 Linux 构建的,因此我假设 stdout 是合乎逻辑的选择。不过,我不确定。至于欺骗 A 启动我的包装器,没有什么可配置的。我想我可以尝试交换可执行文件 - 我会试一试。希望它没有签名:)
  • @RonBurk 好主意。为我自己的包装器交换可执行文件正是我所需要的——我只是在显示到我自己的窗口时传递所有内容。如果您愿意发布作为答案,我会接受。

标签: .net windows winapi console


【解决方案1】:

用您自己的可执行文件代替 B 生成 B 并将其输出发送到两个不同的位置,或多或少类似于 *nix 中的“tee”命令。 (换掉 .exe 做得很好——没想到这一点!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多