0

我有一个 Java 程序需要通过 Bash 脚本调用某个 C++ 程序两次:一次在主类中,一次在另一个类中。这是我调用 Bash 脚本的代码:

String args1 = "bash.sh";

try {
    Process proc = Runtime.getRuntime().exec(args1);

    BufferedReader read =
        new BufferedReader(new InputStreamReader(proc.getInputStream()));
    proc.waitFor();
    try {
        proc.waitFor();
    } catch (InterruptedException e) {
        System.out.println(e.getMessage());
    }
    while (read.ready()) {
        System.out.println(read.readLine());
    }
} catch (IOException e) {
    System.out.println(e.getMessage());
}

这是 Bash 脚本 ( bash.sh):

#!/bin/bash
/home/Codes/CPM_System/source/GcEqClass X_LE.txt 1 out

其中GcEqClass是编译后的 C++ 程序,X_LE.txt是输入文件,1是参数,out是输出文件。

问题是上面的代码第一次运行(即,从主类),它运行良好,但第二次(即,从不同的类),GcEqClass无法打开X_LE.txt阅读 -在这里fopen返回NULL

in = fopen(filename,"rt");
if(in==NULL)
{
    printf("Error: cannot open file %s for read\n", filename);
    exit(-1);
}

奇怪的是,我尝试将这两个调用都放在 Java 主类中,然后它们都起作用了;只有当一个在主类中,而一个是不同的类时,第二个才不起作用。

4

0 回答 0