怎样在一个java程序中获得另一个程序的运行状态

比如我在一个程序A中启动一个进程去运行一个程序B,那么B运行结束后,我在A中如何知道B是异常退出还是正常退出A是其它语言写的的话,怎么穿透java虚拟机获得里面程序的状态... 比如我在一个程序A中启动一个进程去运行一个程序B,那么B运行结束后,我在A中如何知道B是异常退出还是正常退出
A是其它语言写的的话,怎么穿透java虚拟机获得里面程序的状态
展开
 我来答
raycar0524
推荐于2018-05-07 · TA获得超过4683个赞
知道小有建树答主
回答量:812
采纳率:0%
帮助的人:636万
展开全部
这个问题比较普遍,有多种不同的解决方法。
比较常用的,就是在B程序中添加Log文件机制,随时记录B程序的执行状态,或者只记录B程序捕捉到的异常,A程序需要查看B程序执行状态的时候就读取B的log文件,进行分析。
另一种方法是通过B程序的结束返回代码来判断B的退出原因。任何一种编程语言都提供程序返回代码,比如java的System.exit(code)、C#的Environment.Exit(code)等等,其中的code是一个整数,表明了程序退出的时候是正常退出还是异常退出。只需要在A程序中判断这个值就能知道B程序是因为什么退出的。
第三种方法是通过第三方的脚本语言(比如TCL、Python)来分别执行A程序和B程序并监控两个程序的状态,并且可以把两个程序做成模块化来调用执行。这种方法最强大,也最灵活,能够解决两个程序运行时候的互锁等问题,但是也最复杂。

根据你的情况,第二种方法最合适。
追问
确实是第二种方法最合适,可以给个简单的例子吗?谢谢
追答
我手上有TCL调用Python的程序,没有java和C的。
百香果超甜呦
2015-11-23 · 超过18用户采纳过TA的回答
知道答主
回答量:87
采纳率:100%
帮助的人:27.6万
展开全部
  1. 在另一个程序写输出语句,执行到不同的代码段,输出不同的语句。

  2. 在被监听的程序中,利用Java的网络编程,进行通信。看看Java网络编程,很easy。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丶鼻涕猪丶
2015-11-11 · TA获得超过108个赞
知道答主
回答量:201
采纳率:0%
帮助的人:21.1万
展开全部
用一个静态变量去存,每一步去更新状态,然后另外一个程序去读这个变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
祖载bG
2013-09-04 · TA获得超过426个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:236万
展开全部
try{
.......
a.success();
}
catch(){
......
a.fail();
}
调用到A中写好的方法,A不就知道了。
追问
我的意思是A不一定是java程序,可能是本机的另一个C语言写的程序之类的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友752e907
2013-09-04 · TA获得超过513个赞
知道小有建树答主
回答量:809
采纳率:50%
帮助的人:450万
展开全部
读取B程序的日志文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式