Привет!!! Мне нужно запустить Perl программу из Java как отдельный процесс, подскажите как это реализовать. Другими словами мне нужно выполнить системную команду, т.е. вызвать сам Perl и в качестве параметра передать ему имя файла, который тот должен выполнить. Вобщем в Perl это делается таким образом:
| Код | #!/usr/bin/perl system("perl myfile.pl");
|
Я так понимаю в Java для подобных вещей есть классы Runtime и Process из пакета java.lang. Пробую это сделать так:
| Код | import java.io.PrintWriter;
public class ExecDemo { public static void main(String[] args) { PrintWriter stdout = new PrintWriter(System.out, true); Runtime r = Runtime.getRuntime(); Process p = null; // Параметры, которые нужно предать на вход, в данном // случае имя файла, который нужно выполнить. String[] param = {"myfile.pl"}; try { p = r.exec("perl", param); // Запускаем процесс p.waitFor(); // Ожидаем завершения процесса } catch (Exception e) { stdout.println("Runtime error"); } stdout.println("Perl programm is enden with code: " + p.exitValue()); stdout.close(); } }
|
Эта программа успешно компилируется, но она подвисает при выполнении, причем из "Диспетчера задач" видно, что она запускает программу на Perl. Помоему я здесь что-то не то намутил с параметрами. Пробовал передать параметр и таким образом:
| Код | p = r.exec("perl myfile.pl");
|
Результат тот же. По идее должно было бы открыться новое окно командной строки, затем программа отрабатывает и завершается, после чего Java программа завершает свою работу.
Или я что-то недопонял? Спасибо. |