如何让Runtime.getRuntime().exec(p)运行而不等待睡眠10 ?? 目前它是错的,它等待exec完成然后移动到下一个.我需要在运行中让exec运行,以便在10秒后它可以杀死PresentationInProjector.jpg.
Example:
Runtime.getRuntime().exec("(sleep 10; echo '09|00|CC|01|83|88' | nc localhost 58888) &");
PlayThisSlideShow("PresentationInProjector.jpg");
Run Code Online (Sandbox Code Playgroud)
Dav*_*amp 10
根据文件exec():
在单独的进程中执行指定的字符串命令.
所以任何调用exec()都不应该阻止,除非你waitFor()在返回的进程中使用了Runtime.
这是一个小例子(省略了异常处理):
Process p=Runtime.getRuntime().exec("cmd.exe /c ping 127.0.0.1 -n 10");
System.out.println("Here 1");//this will execute immediately
try {
p.waitFor();
System.out.println("Here 2");//this will only be seen after +- 10 seconds and process has finished
} catch (InterruptedException ex) {
ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
exec()在生成的进程默认结束之前,不会使线程等待.您需要process.waitFor()显式调用以使当前进程等待.我想这PlayThisSlideShow("PresentationInProjector.jpg");是在之后立即调用的exec().您看到的是只要子进程正在运行,系统就会使JVM进程运行.我想没有办法轻易克服这个问题,让父进程在子进程仍在运行时被终止.
你为什么不能用Java杀死演示投影仪?
| 归档时间: |
|
| 查看次数: |
11756 次 |
| 最近记录: |