python问题求解,为什么wait()之后,不能退出程序

python问题求解,为什么wait()之后,不能退出程序,第1张

pro.waitFor()

导致当前线程等待,如有必要,一直要等到由该 Process 对象银侍表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线锋运吵程将被阻塞,直到退出子进程。

一般都是用一个线程去做处理运行,另一个线程来做悄空管理,

try {

final Process pro = Runtime.getRuntime().exec("notepad.exe")

new Thread(new Runnable() {

public void run() {

try {

pro.waitFor()

System.out.println(1)

pro.destroy()

} catch (InterruptedException e) {

e.printStackTrace()

}

}

}).start()

new Thread(new Runnable() {

public void run() {

try {

Thread.sleep(1000)

pro.destroy()

} catch (InterruptedException e) {

e.printStackTrace()

}

}

}).start()

} catch (IOException e) {

e.printStackTrace()

}

我用的是一个新的线程,一般用主线程去做处理,控制他的关闭。你的另一个其他代码也可以执行。对于cmd这个窗体,就完全没有思路了,java程序是没办法把他关闭掉,应该是dos的权限比java的大吧。

这个问灶模晌题比较普遍,有多种不同的解决方法。

比较常用的,就是在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程序并监控两个程序的状态,并且可以把两个程序做成模块化来调用执行。这种方法最强大,也最灵活,能够解决两个程序运行时候的互锁等问题,但是也最复杂。

根据你的情况,第二种方法最合适。

你先用cmd输入python -V 如果老冲空说找不到就是环境变量没弄好,有返回值再看java的程侍瞎序,这个python的执行结果并不会直接判拿返回到proc 中。python是独立运行的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8275488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存