我正在尝试在Groovy中创建一个方法来获取应用程序的进程ID.我现在正处于这个阶段:
String getProcessIdFor(String program) { def buffer = new StringBuffer() Process commandOne = 'ps -A'.execute() Process commandTwo = "grep -m1 '${program}'".execute() Process commandThree = "awk '{print \$1}'".execute() Process process = commandOne | commandTwo | commandThree process.waitForProcessOutput(buffer,buffer) return buffer.toString() }
但这给了我:
Exception in thread "Thread-1" groovy.lang.GroovyRuntimeException: exception while reading process stream awk: Syntax error at source line 1 at org.codehaus.groovy.runtime.ProcessGroovyMethods$3.run(ProcessGroovyMethods.java:402) context is at java.lang.Thread.run(Thread.java:745) >>> ' <<< missing } Caused by: java.io.IOException: Stream closed awk: bailing out at source line 1 at java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:434) at java.io.OutputStream.write(OutputStream.java:116) at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122) at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122) at org.codehaus.groovy.runtime.ProcessGroovyMethods$3.run(ProcessGroovyMethods.java:399) ... 1 more Process finished with exit code 0
看起来它在awk命令上挣扎,但我似乎无法弄清楚我哪里出错了.有任何想法吗?