怎样在一个java程序中获得另一个程序的运行状态
比如我在一个程序A中启动一个进程去运行一个程序B,那么B运行结束后,我在A中如何知道B是异常退出还是正常退出A是其它语言写的的话,怎么穿透java虚拟机获得里面程序的状态...
比如我在一个程序A中启动一个进程去运行一个程序B,那么B运行结束后,我在A中如何知道B是异常退出还是正常退出
A是其它语言写的的话,怎么穿透java虚拟机获得里面程序的状态 展开
A是其它语言写的的话,怎么穿透java虚拟机获得里面程序的状态 展开
7个回答
展开全部
这个问题比较普遍,有多种不同的解决方法。
比较常用的,就是在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程序并监控两个程序的状态,并且可以把两个程序做成模块化来调用执行。这种方法最强大,也最灵活,能够解决两个程序运行时候的互锁等问题,但是也最复杂。
根据你的情况,第二种方法最合适。
比较常用的,就是在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的。
展开全部
在另一个程序写输出语句,执行到不同的代码段,输出不同的语句。
在被监听的程序中,利用Java的网络编程,进行通信。看看Java网络编程,很easy。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用一个静态变量去存,每一步去更新状态,然后另外一个程序去读这个变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
try{
.......
a.success();
}
catch(){
......
a.fail();
}
调用到A中写好的方法,A不就知道了。
.......
a.success();
}
catch(){
......
a.fail();
}
调用到A中写好的方法,A不就知道了。
追问
我的意思是A不一定是java程序,可能是本机的另一个C语言写的程序之类的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
读取B程序的日志文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询