【发布时间】:2021-12-16 15:00:33
【问题描述】:
我正在尝试使用 Runtime.getRuntime().exec() 来调用程序,就好像它是从终端调用的一样,但它在读取第一个文件后会因致命错误而崩溃。
在终端中我像这样运行命令:
mace4 -c -f inputFile.in > outputFile.out
它按预期工作,从第一个文件读取并在第二个文件中输出。
在 Java 中我尝试以这种方式运行它:
String args[] = new String[]{"mace4", "-c", "-f", inputFileName ,">",outputFileName};
try {
String s;
Process proc = Runtime.getRuntime().exec(args, null, new File("/home/user/workDirectory/"));
BufferedReader br = new BufferedReader(
new InputStreamReader(proc.getInputStream()));
while ((s = br.readLine()) != null)
System.out.println("line: " + s);
proc.waitFor();
proc.destroy();
程序一到达第一个文件的末尾,就会抛出这个:
致命错误:read_all_input,文件 > 未找到
该程序已经很老了,我似乎无法找到一种方法来从中获取更详细的错误..
我尝试用这些参数调用它 {"sh or bash", "-c", "mace4", "-c", "-f", inputFileName ,"> ",outputFileName} 使程序运行然后冻结(或至少控制台中没有出现).. 我是否调用了终端命令错误,如果是,我应该更改什么?
PS:这是我在这里的第一个问题,如果我错过了什么,我很抱歉..
【问题讨论】:
标签: java linux bash exec system-calls