当我从java代码

时间:2017-12-09 20:15:39

标签: java c++ terminal command

下面的代码没有输出知道它只在相关的c ++代码(code.cpp)中没有输入流时才提供输出:

        String command = "g++ -o code.bin code.cpp";
        Process p = Runtime.getRuntime().exec(command);

        p.waitFor();
        System.out.println("exit: " + p.exitValue());
        p.destroy();


        Process p1 = Runtime.getRuntime().exec("./code.bin < input.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(p1.getInputStream()));

        String line = "";
        while((line = br.readLine())!=null){
            System.out.println(line);
        }
        p1.waitFor();
        System.out.println("exit: "+p1.exitValue());
        p1.destroy();

例如,此代码将提供输出:

    #include<iostream>
    using namespace std;
    int main(){
        cout<<"hello world\n";
        return 0;
    }          

虽然这段代码没有:

    #include<iostream>
    using namespace std;
    int main(){
       int x;
       cin>>x;
       cout<<x<<endl;
       return 0;
    }

我在我的终端执行了命令并且它提供了想要的输出,所以任何人都知道这背后的原因?

1 个答案:

答案 0 :(得分:0)

最新答案。在我的类似情况下,用fflush(stdout)刷新输出缓冲区证明是可行的。