我使用ProcessBuilder.start()
从Java代码运行shell命令
当命令完成执行时,我需要回调(或某种通知)。该命令需要10-15秒才能执行。是否可以使用ProcessBuilder
?
答案 0 :(得分:4)
是的,这是可能的。您可以在进程上调用waitFor()
,并等待它返回,然后分析返回的值以确保它为0,或者如果没有响应错误。这通常在后台线程中完成,以便不占用当前线程。
答案 1 :(得分:4)
ProcessBuilder的start()
方法明确指出它返回一个进程,其API为here。该进程具有可以在其上调用的方法,包括waitFor,它将在Process完成时唤醒当前线程。你需要做的就是启动一个线程,给它这个过程,并在进程完成时或超时后发出信号。