不要将其作为重复项关闭,因为我对类似问题有细微但重要的更改:
是否可以在 java 中捕获外部进程(即 stdout)的输出,当我没有创建进程,而我只知道进程名称?
我在 Windows 7 上运行。
编辑:
如果有其他语言 (C#\C++) 可以做到这一点,那么我可以编写一个捕获输出的“CaptureOutput”程序,写入标准输出,然后在我的 Java 代码中启动“CaptureOutput”并读取它的标准输入。
丑陋,但可能有效。
所以我也可以用其他语言回答。
最佳答案
首先让我说你的要求打破了进程隔离的所有规则。 如果您的进程没有创建您要捕获其输出的进程,并且您也无权修改调用进程(命令 shell?服务管理器?您还没有说哪个)。然后,您唯一的机会(充其量是一个渺茫的机会)是将一个线程注入(inject)进程,并在其所有其他线程挂起时更改全局标准输出(和标准错误?)。这只能由对目标进程具有完全访问权限的进程来完成。对正在运行的过程执行此类手术并不适合胆小的人。
关于c# - 捕获外部进程输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11760186/