一个后台的程序怎么捕获控制台的标准输出?

buzhiming99 2004-08-11 12:16:01
对System.Out重定向只能捕获java程序的输出,怎么捕获控制台的输出?
...全文
314 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
buzhiming99 2004-08-13
  • 打赏
  • 举报
回复
找到其他替代解决方法了,结贴
qqbz 2004-08-12
  • 打赏
  • 举报
回复
怎么会有这种要求的呢?
buzhiming99 2004-08-12
  • 打赏
  • 举报
回复
要捕获输出的后台程序没办法修改,包括运行时进行重定向都不允许。

管道流怎么去跟输出挂上钩?
buzhiming99 2004-08-11
  • 打赏
  • 举报
回复
是在linux下java XXXX &运行,怎么捕获控制台的输出?
tomcatjava 2004-08-11
  • 打赏
  • 举报
回复
修改后台程序该那些输出到文件中,如使用Log4j等:)
也可以考虑使用管道流PipeInputStream,PipeOutputStream。
buzhiming99 2004-08-11
  • 打赏
  • 举报
回复
谢谢StockCsdn,不过要捕获的输出的程序在我程序运行之前已经执行了,并不允许我去调用
StockCsdn 2004-08-11
  • 打赏
  • 举报
回复
转帖

import java.io.*;

public class CaptureOutput
{

public static void main(String[] args)
{
try
{
String cmd = "ping ";

String param = args.length == 1 ? args[0]:"192.168.2.26";
Process child = Runtime.getRuntime().exec( cmd + param );

InputStream child_in = child.getInputStream();

int c;
while ((c = child_in.read()) != -1)
{
System.out.print((char)c);
}
child_in.close();
}catch (IOException e)
{
System.err.println(e);
}
}
}
qqbz 2004-08-11
  • 打赏
  • 举报
回复
我没有办法了。
buzhiming99 2004-08-11
  • 打赏
  • 举报
回复
up
buzhiming99 2004-08-11
  • 打赏
  • 举报
回复
C里面用 pipe(int[]),再将pipe的输入与stdout(也就是1)进行dup2,就可以获得标准输出。
可是在java中System.Out似乎跟当前进程相关。
minghuitian 2004-08-11
  • 打赏
  • 举报
回复
gz
buzhiming99 2004-08-11
  • 打赏
  • 举报
回复
情况大概是这样的:后台有个程序会将一些信息输出在控制台,现在需要写个程序将这些信息捕获,在不知道原来后台那个程序的名字下能够做到吗?
qqbz 2004-08-11
  • 打赏
  • 举报
回复
楼主意思是,你的java要俘获另一个控制台的输出?
buzhiming99 2004-08-11
  • 打赏
  • 举报
回复
可是有些输出是其他程序打印在控制台的,并不全是System.in
draco2002 2004-08-11
  • 打赏
  • 举报
回复

接收键盘的输入
BufferedReader stdin =
new BufferedReader(
new InputStreamReader(System.in));
draco2002 2004-08-11
  • 打赏
  • 举报
回复
利用System.in
buzhiming99 2004-08-11
  • 打赏
  • 举报
回复
java程序是在后台运行的。这时在控制台输出不会重定向。
xiaochong1651 2004-08-11
  • 打赏
  • 举报
回复
在java程序运行时

控制台的输出也就是java程序的输出

可以通过重定向实现

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧