Обертка Java вокруг PE (.exe) - PullRequest
3 голосов
/ 16 января 2010

Есть ли способ сделать программу на Java (в Windows), которая просто действует как обертка вокруг PE (.exe), передавая все входные данные stdin программе и записывая в stdout все, что пишет PE.

Мне это нужно, потому что интерфейс для программы допускает только классы Java, но я хочу, чтобы он выполнял некоторый код, который я собрал в C ++.

Заранее спасибо.1006 * редактировать: переносимость важна на 0%.Это нужно только для работы в Windows и никогда не понадобится для работы где-либо еще.

Ответы [ 3 ]

5 голосов
/ 16 января 2010

Взгляните на ProcessBuilder :

 ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
 Map<String, String> env = pb.environment();
 env.put("VAR1", "myValue");
 env.remove("OTHERVAR");
 env.put("VAR2", env.get("VAR1") + "suffix");
 pb.directory("myDir");
 Process p = pb.start();

и другой пример этого .

2 голосов
/ 16 января 2010

Да, это возможно с java.lang.Runtime.ecec () и java.lang.Process, с помощью которого вы можете получить доступ ко всем 3 потокам (in / out / err) к * .exe, который вы выполняете.

1 голос
/ 16 января 2010

Другие упоминали стандартные механизмы Java ( ProcessBuilder и его ilk ). Однако для надежной переадресации stdout / stdin / errout требуется care ( extra ). Если вам не нужно обрабатывать этот ввод-вывод внутри Java-приложения, рассмотрите возможность использования встроенного вызова (например, функции C system) через JNI или JNA ( демо здесь ).

...