0
У меня есть следующий Groovy скрипт:Почему Groovy execute() висит?
#!/opt/groovy-1.8.6/bin/groovy
final env = null // []
final command = ["./setter-for-catan.scala"]
final process = command.execute(env, null)
println (['echo', '********************** 0'].execute(env, null).text)
final stdout = process.inputStream
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout))
while ((line = reader.readLine()) != null) {
System.out.println ("Stdout: " + line);
}
и следующий Scala сценарий:
#!/bin/bash
export SCALA_HOME=/opt/scala-2.10.1
echo '********************* 1' "$0" "[email protected]"
${SCALA_HOME}/bin/scala -version 2>&1
exec ${SCALA_HOME}/bin/scala "$0" "[email protected]" 2>&1
!#
println("******************* 2")
Назвав Groovy выводит скрипт:
********************** 0
Stdout: ********************* 1 ./setter-for-catan.scala
Stdout: Scala code runner version 2.10.1 -- Copyright 2002-2013, LAMP/EPFL
Stdout: ******************* 2
Если env
определяется как []
, в Скрипт Groovy висит со следующим выходом:
********************** 0
Stdout: ********************* 1 ./setter-for-catan.scala
Stdout: Scala code runner version 2.10.1 -- Copyright 2002-2013, LAMP/EPFL
Что происходит и что должно быть сделано так, что execute()
не зависает, когда env
является Array
?
Вы можете запустить 'Трассирование -f СВОИМИ first-script', чтобы увидеть, что происходит, когда процесс зависает. –
Что произойдет, если вы запустите 'env -i./Setter-for-catan.scala'? –
@EmilSit, который также вызывает зависание скрипта. Что нужно сделать, чтобы указать, что он должен наследовать окружающую среду? –