我在使用 Java 代码执行二进制可执行文件时遇到一些问题。
我的可执行文件使用以下命令在终端(Linux 操作系统)上完美运行
./ab0818 < ab0818.挑战
其中“ab0818”是可执行文件,“ab0818.challenge”是输入文件。
在终端中运行此命令后,我将得到 0 退出代码
我的代码如下。
System.out.println("Running the batch script");
Process p = Runtime.getRuntime().exec("./ab0818 < ab0818.challenge");
p.waitFor();
System.out.println("is.read() = "+p.exitValue());
当我运行我的代码时,它永远不会退出 wait(waitFor()) 进程,并且我的程序永远不会终止。
我的问题是有没有其他方法可以使用 java 代码执行命令,或者我的代码是否需要进行任何修改。
提前致谢, -维拉杰
最佳答案
Java 不知道 Linux shell 的重定向运算符“<”。
你可以尝试:
...exec("bash -c './ab0818 < ab0818.challenge'")
您可能还想查看http://download.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html
关于java - 我在使用 Java 代码执行二进制可执行文件时遇到一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888182/