Короткая версия:
Как я могу запретить порожденному процессу Java в Windows блокировать завершение процесса порождения?
Длинная версия:
Я пытаюсь создать многопоточную Java-программу (Selenium RC, не то, чтобы она имела значение) из программы, запускаемой из командной строки Windows (задача NAnt , опять же, не то, чтобы она имела значение) Я делаю это с помощью команды Windows «Пуск», и порожденный процесс запускается и работает правильно. Процесс нереста получает управление и завершается (NAnt говорит «BUILD SUCCEEDED»), но фактически не выходит из командной строки. Когда порожденный процесс окончательно завершается (может быть через несколько часов), командный процесс возвращается и появляется приглашение командной строки.
Например:
<target name="start_rc">
<exec program="cmd" failonerror="false" workingdir="${ross.p5.dir}\Tools\selenium\selenium-server-1.0.1" verbose="true">
<arg value="/C"/>
<arg value="start"/>
<arg value="java"/>
<arg value="-jar"/>
<arg path="${ross.p5.dir}\Tools\selenium\selenium-server-1.0.1\selenium-server.jar"/>
<arg value="-userExtensions"/>
<arg path="${ross.p5.dir}\Tools\selenium\selenium-server-1.0.1\user-extensions.js"/>
<arg value="-browserSideLog"/>
<arg value="-log"/>
<arg value="${ross.p5.dir}\artifacts\selenium.log"/>
<arg value="-debug"/>
</exec>
</target>
Производит:
C:\Ross>nant start_rc
NAnt 0.86 (Build 0.86.2898.0; beta1; 12/8/2007)
Copyright (C) 2001-2007 Gerry Shaw
http://nant.sourceforge.net
Buildfile: file:///C:/Ross/ross.build
Target framework: Microsoft .NET Framework 3.5
Target(s) specified: start_rc
start_rc:
[exec] Starting 'cmd (/C start java -jar C:\p5\Tools\selenium\selenium-server-1.0.1\selenium-server.jar -userExtensions C:\p5\Tools\selenium\selenium-server-1.0.1\user-extensions.js -browserSideLog -log C:\p5\artifacts\selenium.log -debug)' in 'C:\p5\Tools\selenium\selenium-server-1.0.1'
BUILD SUCCEEDED
Total time: 4.1 seconds.
... и ничего, пока я не закрою окно, в котором работает Java, тогда ...
C:\Ross>
Очевидно, что что-то мешает завершить процесс nant, но разве команда Windows START не должна это предотвратить?