下面的代码是没有输出的,要知道只有在关联的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;
}
我在终端机上执行了这些命令,它给出了想要的输出,所以有人知道这背后的原因吗?
迟来的答案。在我类似的情况下,用下面的命令来冲洗输出缓冲区 fflush(stdout)
事实证明是可行的。