Я создаю процесс в Windows с Java. Моя проблема заключается в том, что этот процесс не заканчивается. Вот пример программы:Windows process exec'ed с Java не заканчивается
import java.io.IOException;
public class Test {
/**
* @param args
* @throws IOException
* @throws InterruptedException
*/
public static void main(String[] args) throws IOException,
InterruptedException {
Process process = Runtime.getRuntime().exec("cmd /c dir");
process.waitFor();
}
}
По причинам, отличным от моего понимания, эта программа никогда не завершается. Это верно, если «cmd/c dir» заменен ipconfig, а также другими вещами.
Я могу видеть, используя ProcessExplorer, что java создает процесс cmd. Этот пример, очевидно, является упрощением; в моей первоначальной программе я обнаружил, что если я вызову process.destroy() через некоторое время и проведу вывод процесса cmd, команда будет успешно выполнена.
Я пробовал это с различными версиями Java 1.5 и 1.6. Моя ОС - Windows XP Pro, SP 2.
+1 для того, чтобы поймать проблему передачи аргументов. –
Вы не совсем правы. В документах API для exec (String) указано, что аргумент является «системной командой», без какого-либо более подробного определения «системной команды». Не исключено, что JVM просто передает строку в cmd.exe. – JesperE
Спасибо за ответ и ссылку! У меня должен быть шанс проверить это на проблемной машине в воскресенье. На самом деле аргументы передаются правильно; Я вижу их в Process Explorer. –