首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获外部进程输出

问捕获外部进程输出
EN

Stack Overflow用户
提问于 2012-08-01 13:20:42
回答 4查看 1.1K关注 0票数 8

不要把它关闭为重复,因为我有一个微妙但重要的变化,从相似的问题:

如果我没有创建流程,并且我只知道进程名,那么是否有可能在java,中捕获外部进程的输出(即stdout)?

我在windows 7上跑。

编辑:

如果有其他语言(C#\C++)的方法,那么我可以编写一个"CaptureOutput“程序来捕获输出、写到stdout,并在我的java代码中启动"CaptureOutput”并读取它的stdput。

很丑,但可能有用。

所以用其他语言的回答对我来说也是可以的。

EN

回答 4

Stack Overflow用户

发布于 2012-08-12 00:03:01

首先,让我说,您要求的是打破了所有的规则的过程隔离。如果您的进程没有创建要捕获其输出的进程,并且您也没有权限修改调用进程(命令shell?服务经理?你还没说是哪一个)。那么,您唯一的机会,充其量也是一个很小的机会,就是在进程中注入一个线程,当它的所有其他线程被挂起时,更改全局stdout (和stderr?)。这只能由具有对目标进程的完全访问权限的进程来完成。在跑步的过程中做这样的手术并不是为了心脏的虚弱。

票数 1
EN

Stack Overflow用户

发布于 2012-09-27 19:54:22

你想做的事很危险。你很容易无意中破坏了你想要进入的进程的记忆。测试。那就再试一试。祝你好运-我知道我不想这么做。

这篇文章-- API挂钩 --解释了如何开始您想要的东西(使用C++)。一旦将代码注入到正在运行的进程中,就会有其他Windows调用来替换STDOUT (例如SetStdHandle)。

票数 1
EN

Stack Overflow用户

发布于 2012-08-02 12:38:55

您对进程何时开始有任何控制吗?如果是这样的话,您可以启动该进程,并让它将其stdout输送到一个可以读取的文件中,或者您编写的另一个程序中,该程序可以将其记录在数据库、事件查看器等中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11760186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档