【发布时间】:2012-06-28 08:42:37
【问题描述】:
在 Java Source 中调用 gcc 编译器来编译 C 文件。
List<String> command = new ArrayList<String>();
String fs = System.getProperty("file.separator");
command.add("C:\\cygwin" + fs + "bin" + fs + "sh");
command.add("-c");
command.add("/usr/bin/gcc /cygdrive/d/WorkSpace/TEST/HelloWorld.c -o /cygdrive/d/WorkSpace/HHH");
ProcessBuilder builder = new ProcessBuilder(command);
final Process process = builder.start();
HHH.exe 未创建。有人能解释一下这段代码有什么问题吗?
【问题讨论】:
-
将输出重定向到 Stream 并尝试打印。输出流流 = process.getOutputStream();使用流来读取实际发生的情况。
-
我做到了。我使用 process.getInputStream() 将输出写入控制台。但什么也没有出现。
-
先执行命令看看。检查是否,即使直接执行在 shell 中也没有显示任何内容。
-
你以后会打电话给
process.waitFor()吗?也许您的 Java 应用程序在gcc完成其工作之前就已经存在,从而杀死了它。 -
在单元格中直接执行命令成功输出HHH.exe....调用process.waitFor()也没有做任何改变。
标签: java bash gcc compilation cygwin