C#:重定向已在运行的进程的标准输出

标签 c# ssh cmd system.diagnostics

我一直很难获得“子进程”的输出(一个由我通过 c# System.Diagnostics.Process 监视的黑盒进程在内部启动)

我采纳了我之前帖子的回答中给出的建议: here .在那里你可以找到我所经历的细节。

此时,虽然我能够找到由 process1.exe 生成的 ssh 进程,但我正在监视它。我无法将输出重定向到我的 C# 程序,因为它是一个“已经在运行的进程”,并且不是直接从 C# 启动的。

看起来,您在 System.Diagnostics.Process 对象上设置的所有属性,只有在您从 C# 应用程序显式启动该进程时才会生效;如果其他一些“非托管进程”启动了该进程,则设置此重定向无效,因为该进程已经由未指定我需要的重定向的东西启动。

有什么方法可以重定向已经启动的进程的输出(由程序启动的进程,在启动此进程之前我没有范围预先指定重定向)?

最佳答案

假设没有更直接的解决方案,您可以尝试通过 CreateRemoteThread() 在另一个进程中运行一段代码,解释了 here .

关于C#:重定向已在运行的进程的标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095826/

相关文章:

docker - Gitlab CI/Docker : ssh-add keeps asking for passphrase

batch-file - 如何通过批处理脚本根据文件夹名称重命名文件

C#疑惑,找数据类型

c# - 在 NHibernate 中审核多对多关系

c# - 我如何实现 HTTP 响应过滤器以一次对整个内容进行操作,不分块

windows - 使用批处理检查路径是文件还是文件夹

c# - 如何通过命令行在远程机器上触发批处理文件

c# - 通过代码打开机器/基地Web.Config(64位)

windows - 从 Git Gui (windows) 推送到远程 Git 存储库的问题

deployment - Fabric 需要很长时间才能使用 ssh