有没有办法让Java程序(在Windows中)充当PE的包装器 (.exe),将所有stdin输入传递给程序并写出标准输出PE写出的所有内容。
我需要这个,因为程序的接口只允许Java类,但我希望它能运行一些我用C ++编写的代码。
提前致谢。
编辑:可移植性是0%重要。这只需要在Windows中工作,永远不需要在其他任何地方工作。
答案 0 :(得分:5)
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();
答案 1 :(得分:2)
是的,java.lang.Runtime.ecec()和java.lang.Process可以使用它来访问你正在执行的* .exe的所有3个流(in / out / err)。
答案 2 :(得分:1)
其他人提到了标准的Java机制(ProcessBuilder及其ilk)。但是,可靠地重新路由stdout / stdin / errout需要care(additional)。如果您不需要在Java应用程序中处理此I / O,请考虑通过system
或JNI使用本机调用(例如C JNA函数)(demo here )。