以下代码经常卡住(我认为是阻塞 I/O),有时候可以工作。
但是当我改变代码为
def static executeCurlCommand(URL){
def url = "curl " + URL;
def proc = url.execute();
def output = proc.in.text;
return output;
}
但是当我改变代码为
def static executeCurlCommand(URL){
def url = "curl " + URL;
def proc = url.execute();
def outputStream = new StringBuffer();
proc.waitForProcessOutput(outputStream, System.err)
return outputStream.toString();
}
每次都能正常工作。为什么第一种方式,即通过proc.in.text
输入会有时候卡住?这看起来不像是环境特定的问题,因为我在Windows和Cygwin上都尝试过。
为了测试/运行上述方法,我已经尝试了-
public static void main(def args){
def url = 'http://mail.google.com';
println("Output: " + executeCurlCommand(url));
}
我在 Stack Overflow 上看到了多个问题,它们都提供了第二种方法。虽然它能够正常工作,但我希望知道第一种方法的问题在哪里。