【发布时间】:2012-04-11 00:54:21
【问题描述】:
我正在使用 ProcessBuilder.start() 从 Java 代码运行 shell 命令
当命令完成执行时,我需要一个回调(或某种通知)。该命令需要 10-15 秒才能执行。可以使用ProcessBuilder吗?
【问题讨论】:
标签: java callback processbuilder
我正在使用 ProcessBuilder.start() 从 Java 代码运行 shell 命令
当命令完成执行时,我需要一个回调(或某种通知)。该命令需要 10-15 秒才能执行。可以使用ProcessBuilder吗?
【问题讨论】:
标签: java callback processbuilder
ProcessBuilder 的start() 方法明确声明它返回一个Process,其API 是here。该 Process 具有可以在其上调用的方法,包括 waitFor,它将在 Process 完成时唤醒当前线程。您需要做的就是启动一个线程,给它这个进程,并在进程完成或超时后发出信号。
【讨论】:
是的,这是可能的。你可以在Process上调用waitFor(),等待它返回,然后分析返回的值,确定它是0,否则不响应错误。这通常在后台线程中完成,以免占用当前线程。
【讨论】: