我有这个问题: 我创建了一个执行某些任务的bash脚本。有一次,这个脚本调用了一个java程序。这个java程序执行一些wsdl任务,并且在一点上必须调用执行模拟的外部fortran程序并将结果放在文件“oucomes.dat”中。 program.exe完美执行但java程序似乎无法打开fortran程序创建的文件。调用fortran模拟的java程序中的代码是:
Runtime.getRuntime().exec("./script.sh");
其中script.sh包含
#!/bin/bash
./program.exe
当我第一次调用program.exe然后调用java程序时,java程序可以完全读取“outcomes.dat”。问题是我必须从java内部调用program.exe,因为我需要从wsdl服务实时获取一些数据,并最终将数据发送回wsdl服务。所以我想问题的形式是我从java内部调用program.exe。一种解决方案可能是将java中的代码拆分为两个程序,并在程序之间调用program.exe。但我想要一个更快的解决方案(在CPU和内存使用方面)。哪个是调用program.exe以允许java程序读取“outcome.dat”的正确形式? PS:我使用的是linux。
答案 0 :(得分:1)
看起来好像您正在等待script.sh完成。你需要做这样的事情(未经测试):
Process p = Runtime.getRuntime().exec("./script.sh");
p.waitFor();
您还可以使用exitValue()
测试流程的退出值。
请参阅http://docs.oracle.com/javase/6/docs/api/java/lang/Process.html。