在一个代码中运行两个bash文件

时间:2013-08-17 01:00:34

标签: java c++ bash

我有一个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类中,然后它们都工作了;只有当一个人在主类中,而一个是不同的类时,第二个不起作用。

0 个答案:

没有答案