我需要创建一个调用应用程序(c++ 二进制文件)4000 次的脚本。该应用程序需要一些参数,并且每次调用都会将一个 zip 文件写入磁盘。因此,当脚本执行时,4000 个 zip 文件将被写入磁盘。该应用程序支持多线程。
我首先创建了一个完成这项工作的 bash 脚本,它运行良好。但现在我需要脚本独立于平台。因此,我尝试将脚本移植到 groovy,如下所示:
for (int i = 1; i <= 4000; i++) {
def command = """myExecutable
a=$argA
b=$outDir"""
def proc = command.execute() // Call *execute* on the string
proc.waitFor() // Wait for the command to finish
// Obtain status and output
println "return code: ${ proc.exitValue()}"
println "stderr: ${proc.err.text}"
println "stdout: ${proc.in.text}" // *out* from the external program is *in* for groovy
println "iteration : " + i
}
但是在将 381 个 zipfile 写入磁盘后,脚本就会挂起。每次通话或类似的事情后,我是否需要关闭该过程?
这里: http: //groovy.codehaus.org/Process+Management
它说它知道 java.lang.Process 可能会挂起或死锁。在 groovy 中做这样的事情是不行的吗?
我也会在 python 中尝试一下,看看它是否会出现同样的问题