java - 我在使用 Java 代码执行二进制可执行文件时遇到一些问题

标签 java command-line

我在使用 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/

相关文章:

java - Spring Boot事务回滚

bash - CentOS 7 -eq : unary operator expected

java - 动态创建的 fragment 之间的通信出现空指针异常

java - 依赖另一个 Gradle 脚本中的项目

java - 生命游戏数组索引越界

java - 您将使用什么来构建网络应用程序?

command-line - .tar 与 .tgz...有什么区别?

windows - 复制文件夹内容

Python argparse 有一个关于单字符选项参数的错误 (?)

java - 从命令行运行JAR文件并指定类路径