如何从groovy中没有响应或持续运行的进程'proc.waitFor()'中出来

时间:2014-01-31 12:18:28

标签: linux groovy

我正在尝试使用groovy脚本ping IP地址,如下所示

def proc = 'ping -c 1 localhost'.execute()
proc.waitFor()
println "${proc.exitValue()}"=='0' ? 'OK' : 'NOT OK'

代码工作正常并在linux机器上将输出打印为OK。 但是当在Windows上执行相同的代码块时,调用'proc.waitFor()'不会响应或进入无限等待期。由于'-c 1'不是Windows中的有效选项。

但是如果我使用没有选项'-c'的ping

def proc = 'ping localhost'.execute()

以上代码在Windows上工作正常,因为它只会ping 4次并退出。但不是在Linux上它会持续ping,直到中断,它永远不会到达proc.waitFor()行。 有没有办法摆脱没有响应的'proc.waitFor()'调用。

2 个答案:

答案 0 :(得分:2)

你可以try

proc.waitForOrKill( 10000 ) // 10 seconds

而不是

proc.waitFor()

答案 1 :(得分:0)

您可以在Windows中使用ping -n 1 localhost。有了它,你将在linux中实现与ping -c 1 localhost相同的效果。

如果您正在寻找“常规解决方案”,请参阅tim_yates的回答。